例如..
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、用123112---为delphi程序添加N个功能按钮!的方法来.添加一个按钮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;