Moin,
So funktioniert es auch mit Typ-Überprüfung:
Delphi-Quellcode:
function TMyBelag.erstelleGemuese: TInterfaceList;
var i: Integer;
MyObject: TInterfacedObject;
begin
gemueseListe := TInterfaceList.Create;
gemueseListe.Add(TKnoblauch.Create);
gemueseListe.Add(TPilze.Create);
gemueseListe.Add(TPaprika.Create);
for i:=0 to gemueseListe.Count-1 do
begin
if gemueseListe[i].QueryInterface(IGemuese,MyObject) = S_OK then
WriteLn((gemueseListe[i] as IGemuese).toString);
end;
result := gemueseListe;
end;
Etwas kompliziert ist das mit den Interfaces in Delphi schon...
bis denne
Guido