3

我试图弄清楚如何声明一条记录和许多相互使用的对象事件。问题是无论我以哪种方式声明它们,我都有一个“未声明的标识符”。

那么通过下面的代码,我可以让它们互相使用吗?事件将在对象中使用,记录将被传递并使用到对象的构造函数中。

  TMyEvent = procedure(Sender: TObject; var Rec: TMyRecord) of object;

  TMyRecord = record
    OnMyEvent: TMyEvent;
  end;

这可能吗?它需要在所有版本的 Delphi 7 及更高版本中工作。

4

2 回答 2

14

如果您使用的是较新的 Delphi 版本,则可以在记录中声明类型。您可以通过以下方式从您的活动中引用记录:

type
  TMyRecord = record
  public type
    TMyEvent = procedure (Sender: TObject; var Rec: TMyRecord) of object;
  public
    OnMyEvent: TMyEvent;
  end;
于 2012-02-11T04:13:05.237 回答
3

不幸的是,前向声明只允许用于类而不是记录,所以我知道的唯一方法是使用指针:

PMyRecord = ^TMyRecord;

TMyEvent = procedure(Sender: TObject; Rec: PMyRecord) of object;

TMyRecord = record
  OnMyEvent: TMyEvent;
end;
于 2012-02-11T02:33:45.847 回答