【发布时间】:2012-12-13 10:39:23
【问题描述】:
我想知道是否可以实现这样的东西:
procedure waitandcall(time,@MyProcedureOrFunction)
执行我创建的函数或过程?
我不确定它们是否被称为回调。
【问题讨论】:
标签: delphi function callback procedure
我想知道是否可以实现这样的东西:
procedure waitandcall(time,@MyProcedureOrFunction)
执行我创建的函数或过程?
我不确定它们是否被称为回调。
【问题讨论】:
标签: delphi function callback procedure
绝对有可能,而且你甚至不需要在你的函数之前使用@。
其实所有的事件都是以此为基础的。
首先为你的函数/过程定义一个类型
type
TMyProc = procedure(Param1: Integer);
然后,您可以在任何地方使用您的过程类型,只要您的过程的签名与您的类型匹配。
如果您使用对象方法而不是普通过程/函数,则需要使用of object
type
TMyMethod = procedure(Param1: Integer) of object;
要从内部调用您的回调,您可以使用以下内容:
procedure DoAndCallBack(MyProc: TMyProc)
begin
MyProc(1);
end;
【讨论】:
回调 正是那些被称为的东西,Delphi 完全有能力创建和调用它们。它们也被称为函数指针。请参阅文档中的Procedural Types。
【讨论】:
Sleep(t); F;