如何把主程序的过程或函数传给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;
此问题由李海回答。
| |
|
|
| |
|
|