【问题标题】:Delphi callbacks?德尔福回调?
【发布时间】:2012-12-13 10:39:23
【问题描述】:

我想知道是否可以实现这样的东西:

procedure waitandcall(time,@MyProcedureOrFunction)

执行我创建的函数或过程?

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

【问题讨论】:

    标签: delphi function callback procedure


    【解决方案1】:

    绝对有可能,而且你甚至不需要在你的函数之前使用@。

    其实所有的事件都是以此为基础的。

    首先为你的函数/过程定义一个类型

    type
      TMyProc = procedure(Param1: Integer);
    

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

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

    type
      TMyMethod = procedure(Param1: Integer) of object;
    

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

    procedure DoAndCallBack(MyProc: TMyProc)
    begin
      MyProc(1);
    end;
    

    【讨论】:

    • 谢谢你这么快 :) !
    • 刚刚添加了一个关于如何使用回调的示例。
    • 如果我理解这意味着我可以通过任何程序?
    • 只要声明相同(相同的参数,相同的返回类型,相同的调用约定),都可以。
    • 无法将其与 stdcall 一起使用
    【解决方案2】:

    回调 正是那些被称为的东西,Delphi 完全有能力创建和调用它们。它们也被称为函数指针。请参阅文档中的Procedural Types

    【讨论】:

    • 你有一个如何正确使用它们的例子吗?我的意思是我需要在 waitandcall 函数中写什么来执行这个过程?
    • 如果它按照它的名字所暗示的那样做,你可以用两条指令来做:Sleep(t); F;
    • 基本上我想要一个“阻塞”过程(对于一个线程),它计算时间(gettickcount)并等待(睡眠)然后启动任何过程
    • 哦,好吧,你刚刚让我意识到我想多了……只是睡觉(x 时间)
    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2011-10-04
    相关资源
    最近更新 更多