Interface delegation on Win64
Asked Answered
A

1

11

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?

Anthropolatry answered 16/1, 2012 at 20:8 Comment(0)
P
9

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.
Piled answered 16/1, 2012 at 20:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.