Win64 上的接口委托

发布于 2024-12-27 08:06:15 字数 218 浏览 1 评论 0原文

文档指出接口委托仅适用于 Win32。目前我无法测试它,是文档错误还是接口委托在 64 位编译器中已停止?

Documentation states that interface delegation is available for Win32 only. Currently I can't test it, is it documentation bug or interface delegation is discontinued in 64-bit compiler?

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

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

发布评论

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

评论(1

霊感 2025-01-03 08:06:15

这是一个文档错误。 Win64 下发出以下蜂鸣声:

program Win64delegatedInterfaces;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  IIntf = interface
    procedure Foo;
  end;

  TMyClass = class(TObject, IIntf)
    FIntf: IIntf;
    property Intf: IIntf read FIntf implements IIntf;
  end;

  TMyOtherClass = class(TInterfacedObject, IIntf)
    procedure Foo;
  end;

var
  MyClass: TMyClass;
  Intf: IIntf;

procedure TMyOtherClass.Foo;
begin
  Beep;
end;

begin
  MyClass := TMyClass.Create;
  MyClass.FIntf := TMyOtherClass.Create;
  Intf := MyClass;
  Intf.Foo;
end.

It's a documentation bug. The following beeps under Win64:

program Win64delegatedInterfaces;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  IIntf = interface
    procedure Foo;
  end;

  TMyClass = class(TObject, IIntf)
    FIntf: IIntf;
    property Intf: IIntf read FIntf implements IIntf;
  end;

  TMyOtherClass = class(TInterfacedObject, IIntf)
    procedure Foo;
  end;

var
  MyClass: TMyClass;
  Intf: IIntf;

procedure TMyOtherClass.Foo;
begin
  Beep;
end;

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