[fpc-pascal] Interface delegates and the implements property specifier
Adriaan van Os
fpc at microbizz.nl
Sat Dec 21 16:49:00 CET 2019
Section 7.4 Interface delegation
<https://www.freepascal.org/docs-html/current/ref/refse45.html#x98-1200007.4> of the FPC Language
Reference Guide discusses interface delegates and the implements property specifier.
For example
$interfaces corba}
type
IMyInterface = interface
procedure P1;
end;
IMyInterface2 = interface
procedure P2;
end;
TMyClass = class(TInterfacedObject,
IMyInterface, IMyInterface2)
FI2 : IMyInterface2;
protected
procedure IMyInterface.P1 = MyP1;
procedure MyP1;
public
property MyInterface: IMyInterface2
read FI2 implements IMyInterface2;
I had hoped that procedure IMyInterface2.P2 would now be visible as a method of TMyClass. This
would be quite helpful in implementing multiple-inheritance. But no, the implements specifier
completely hides it. I assume this has been discussed before.
However (after adding an identifying string to IMyInterface and IMyInterface2),
TObject.GetInterface( IMyInterface2) fails for the FI2 delegate but succeeds for an object of
TMyClass. This seems contradictory, as IMyInterface2 is really part of the F12 delegate, not of
TMyClass.
Regards,
Adriaan van Os
More information about the fpc-pascal
mailing list