【问题标题】:Reference to class procedure参考类过程
【发布时间】:2015-02-19 07:52:54
【问题描述】:

我的记录中有这样的静态类程序:

TRec = record
  class procedure Proc; stdcall; static;
end;

现在我需要在我的记录中包含这样的类程序数组:

TRec2 = record
  Procs: array of TClassProcStdcallStatic;
end;

这是可能的,如何确定TClassProcStdcallStatic?

【问题讨论】:

    标签: arrays delphi types delphi-xe7


    【解决方案1】:

    这样定义:

    type
      TClassProcStdcallStatic = procedure; stdcall;
    

    static关键字表示该方法没有Self指针,是单指针函数类型。与of object 双指针函数类型相反。

    【讨论】:

    • 这将是类静态过程吗?
    • 是的,这种类型将满足您的需求
    • 啊,他们终于解决了这个问题。在 D2007 中,您仍然必须进行投射。 (并将 TRec 声明为 object 而不是 record 以避免内部编译器错误。)
    • 声明TClassProcStdcallStatic = reference to procedure stdcall; 会有什么缺点吗?这样,您还可以将匿名方法分配给 TClassProcStdcallStatic 的变量。
    • @GünthertheBeautiful 那行得通。如果可能,我倾向于避免这种方法,因为性能不太好。但性能可能不是你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多