Bei Delphi 5 sieht Supports ja so aus wie du ja sicher schon geschaut hast:
Delphi-Quellcode:
function Supports(const Instance: IUnknown; const Intf: TGUID; out Inst): Boolean;
begin
Result := (Instance <> nil) and (Instance.QueryInterface(Intf, Inst) = 0);
end;
function Supports(Instance: TObject; const Intf: TGUID; out Inst): Boolean;
var
Unk: IUnknown;
begin
Result := (Instance <> nil) and Instance.GetInterface(IUnknown, Unk) and
Supports(Unk, Intf, Inst);
end;
Sprich dein Objekt muss IUnknown implementieren. Das ist bei TComponent nicht der Fall.
Bei neueren Delphiversionen ist IUnknown nicht mehr erforderlich, da die entsprechende Funktionalität nun schon in IInterface drin ist.
So geht es, keine Ahnung ob anders besser:
Delphi-Quellcode:
TTest = Class(TComponent, IUnknown, ITest)
Supports(TObject(obj), ITest, intf)