如何使用function类型的变量(100分)

  • 主题发起人 主题发起人 hawkx
  • 开始时间 开始时间
H

hawkx

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序里使用function类型的变量,总编译不通过,查了Delphi的帮助,没看出哪儿出了问题,
源代码如下:
function TTest.F(Str: String): String;
begin
...
end;

procedure TForm1.TestF;
var
tf: function(Str: String):String;
tt: TTest;
begin
tt:=TTest.Create;
tf:=tt.F;
//上一行出错 Incompatible types: 'regular procedure and method pointer'
//我试过,即使这个procedure是那个function是在同一个类里也不行
end;
多谢帮助!
 
这个我刚才试验了一下用 TForm.MethodAddress(“方法名”)就可以正常编译,而且
在调用的时候可以进入那个函数去执行,但是在传递一个整数值的时候就不行了,可能
在传参方面有问题,不过执行的地址还是对的。
 
必须这样写:
var
tf: function(Str: String):String of object;
因为 Delphi 中类函数和普通函数调用方法是不同的,即便参数形式一样也不行。
 
tf: function(Str: String): String of object;
~~~~~~~~~~
应为你的 F 是一个属于类的方法,这是有一个隐藏参数——类实例指针
因此这是必须的。
 
多人接受答案了。
 
后退
顶部