Delphi回调?

ELC*_*ouz 10 delphi procedure function callback

我想知道是否可以实现这样的事情:

procedure waitandcall(time,@MyProcedureOrFunction)

执行我创建的功能或程序?

我不确定它们是否被称为回调.

ESG*_*ESG 22

这绝对是可能的,在你的功能之前你甚至不需要@.

事实上,所有事件都是基于此.

首先定义函数/过程的类型

type
  TMyProc = procedure(Param1: Integer);
Run Code Online (Sandbox Code Playgroud)

然后,您可以在任何地方使用您的过程类型,只要您的过程的签名与您的类型匹配即可.

如果您使用的是对象方法而不是普通的过程/函数,则需要使用 of object

type
  TMyMethod = procedure(Param1: Integer) of object;
Run Code Online (Sandbox Code Playgroud)

要从内部调用回调,您可以使用以下内容:

procedure DoAndCallBack(MyProc: TMyProc)
begin
  MyProc(1);
end;
Run Code Online (Sandbox Code Playgroud)


Rob*_*edy 5

回调正是所谓的回调,Delphi 完全有能力创建和调用它们。它们也称为函数指针。请参阅文档中的程序类型

  • 如果它如其名所示,你可以用两条指令来完成: `Sleep(t); F;` (2认同)