- Код: Выделить всё
Program Project1;
{$mode objfpc}{$H+}
{$R *.res}
Uses
SysUtils;
Const
iid_Ancestor='{D9CB4FCD-A690-4A99-BD48-A1997AA970CF}';
iid_Descendant='{621EAF8F-8E07-4BFD-A3F5-DBE359496A7E}';
Type
{$INTERFACES COM}
IAncestor=Interface
[iid_Ancestor]
End;
IDescendant=Interface(IAncestor)
[iid_Descendant]
End;
TImplementation=Class(TInterfacedObject,IDescendant)
End;
Begin
WriteLn(Supports(TImplementation,iid_Descendant));
WriteLn(Supports(TImplementation,iid_Ancestor))
End.
- Код: Выделить всё
TRUE
FALSE
Добавлено спустя 3 часа 11 минут 7 секунд:
Хмм... Проверил аналогичный код в Delphi. Поведение такое же: родительский интерфейс not supported. Выходит, баг в моём понимании интерфейсов, и тему можно крыть.
Под занавес ткните plz, где почитать здравое про подобные тонкости - в первую очередь, про наследование. Оно, как выясняется, несколько отличается от наследования у классов.