我需要传递一个procedure of object
作为参数,而不必使用过程类型作为参数。
我尝试如下使用Pointer
类型:
TMyMethod = procedure () of object;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
procedure CallMethod(AMethod : Pointer);
procedure ShowCaption();
end;
procedure TForm1.CallMethod(AMethod : Pointer);
begin
TMyMethod(AMethod^)();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CallMethod(@ShowCaption);
end;
procedure TForm1.ShowCaption();
begin
ShowMessage(Self.Caption);
end;
...但是在编译时会在CallMethod(@ShowCaption);
行生成E2036:
[dcc32 Error] Unit1.pas(33): E2036 Variable required