热情软件屋

 

如何把主程序的过程或函数传给DLL


编号:QA002575
建立日期: 2000年2月15日 最后修改日期:2000年2月15日
所属类别:

fwcf:
    编程工具: delphi3.0
    操作系统: win98
    如何把主程序的过程或函数传给DLL,DLL如何调用主程序的过程或函数?
    
    

回答:

    下面给一个例子:
    1、建立一个DLL工程MyDLL。
    2、输入如下代码:
    type TMyProc = function(n:Integer): Integer;
    
    function CallMyProc(SProc:TMyProc):String;
    begin
     CallMyProc := IntToStr(SProc(2));
    end;
    
    exports CallMyProc;
    
    这里,CallMyProc的参数是一个函数,函数的参数和返回值的类型由TMyProc定义。
    3、编译为DLL。
    4、建立一个EXE工程MyPrj。
    5、添加一个按钮Button1。
    6、输入如下代码:
    type TMyProc = function(n:Integer): Integer;
    function CallMyProc(SProc:TMyProc):String;external 'mydll.dll';
    
    function Square(n:integer):integer;
    begin
     Square := n * n;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ShowMessage(CallMyProc(Square));
    end;
    这里我们调用了DLL的CallMyProc并将Square函数传递给DLL 。
    需要说明的是:这里的Square函数不是TForm的成员函数。如果定义为:
    function TForm1.Square(n:integer):integer;
    则MyPrj和MyDLL中的定义都要修改:
    type TMyProc = function(n:Integer): Integer of object;

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio