Delphi - 使用另一个单元的接口

发布于 2024-11-05 06:38:37 字数 488 浏览 1 评论 0原文

我不断收到:我在另一个单元中定义的接口类型的未声明标识符。 这是我所拥有的:

unit Drawers;

interface

implementation

type

  IDrawer = interface
  ['{070B4742-89C6-4A69-80E2-9441F170F876}']
    procedure Draw();
  end;

end.

unit Field;

interface

uses
  Graphics, Classes, Drawers;

TField = class(TInterfacedObject, IField)
private
  FSymbolDrawer: IDrawer;

在 FSymbolDrawer 我收到编译器错误。

当然我有抽屉的用途;以定义 TField 的单位表示。

这是关于什么的?

谢谢

I am constantly getting the: Undeclared identifier for an interface type I have defined in another unit.
Here is what I have:

unit Drawers;

interface

implementation

type

  IDrawer = interface
  ['{070B4742-89C6-4A69-80E2-9441F170F876}']
    procedure Draw();
  end;

end.

unit Field;

interface

uses
  Graphics, Classes, Drawers;

TField = class(TInterfacedObject, IField)
private
  FSymbolDrawer: IDrawer;

At FSymbolDrawer I get the complier error.

Of course I have the uses Drawers; in the unit where TField is defined.

What's this about?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟酉 2024-11-12 06:38:37

在单元 Drawers 中,IDrawer 的类型声明必须位于单元的接口部分。您已将其插入到实现部分中,该部分仅对单元内声明可见。

这是代码:

unit Drawers;

interface

type

  IDrawer = interface
  ['{070B4742-89C6-4A69-80E2-9441F170F876}']
    procedure Draw();
  end;

implementation

end.

In the unit Drawers the type declaration of IDrawer has to be in the interface part of the unit. You have inserted it in the implementation part where it is only visible for in-unit declarations.

Here is the code:

unit Drawers;

interface

type

  IDrawer = interface
  ['{070B4742-89C6-4A69-80E2-9441F170F876}']
    procedure Draw();
  end;

implementation

end.
亢潮 2024-11-12 06:38:37

您将Drawers 添加到哪个uses 子句中?它必须位于 interface 使用子句中(位于使用它的 TField 定义之上)。

Which uses clause do you add Drawers to? It has to be in the interface uses clause (above the definition of TField that uses it).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文