gpt4 book ai didi

delphi - 如何在Delphi中将对象方法作为参数传递,然后调用它?

转载 作者:行者123 更新时间:2023-12-03 14:35:57 25 4
gpt4 key购买 nike

我担心这可能是一个有点愚蠢的问题,但这让我很困惑。

我正在寻找将对象的方法传递到过程中的最简单的方法,以便过程可以调用对象的方法(例如,在超时后,或者可能在不同的线程中)。所以基本上我想:

  • 捕获对对象方法的引用。
  • 将该引用传递给过程。
  • 使用该引用,从过程中调用对象的方法。

我认为使用接口(interface)可以达到相同的效果,但我认为还有另一种方法,因为存在这种“对象过程”类型声明。

以下不起作用,但它可以帮助解释我困惑的地方......?

interface 
TCallbackMethod = procedure of object;

TCallbackObject = class
procedure CallbackMethodImpl;
procedure SetupCallback;
end;

implementation

procedure CallbackTheCallback(const callbackMethod: TCallbackMethod);
begin
callbackMethod();
end;

procedure TCallbackObject.CallbackMethodImpl;
begin
// Do whatever.
end;

procedure TCallbackObject.SetupCallback;
begin
// following line doesn't compile - it fails with "E2036 Variable required"
CallbackTheCallback(@self.CallbackMethodImpl);
end;

(一旦问题得到解答,我将删除上面的代码,除非它以某种方式帮助解释。)

最佳答案

只需删除指针内容即可。 Delphi 将为您做这件事:

procedure TCallbackObject.SetupCallback;
begin
CallbackTheCallback(CallbackMethodImpl);
end;

关于delphi - 如何在Delphi中将对象方法作为参数传递,然后调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com