Moin,
für Schulungszwecke habe ich Java-Code auf Delphi umzuschreiben und bin ich auf folgendes Problem gestoßen:
Der Delphi-Code sieht so aus:
Delphi-Quellcode:
IGemuese = interface(IInterface)
function toString : string;
end;
...
TKnoblauch = class(TInterfacedObject,IGemuese)
public
function toString : string;
end;
TPaprika = class(TInterfacedObject, IGemuese)
public
function toString : string;
end;
TPilze = class(TInterfacedObject, IGemuese)
public
function toString : string;
end;
...
function TKnoblauch.toString : String;
begin
Result := 'Knoblauch';
end;
//usw. für die anderen Gemüse
...
function TMyBelag.erstelleGemuese: TInterfaceList;
var i: Integer;
gemueseListe: TInterfaceList;
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
WriteLn(IGemuese(gemueseListe[i]).toString); //und das geht dann hier nicht (Zugriffsverletzung)!
end;
result := gemueseListe;
end;
Wie kann ich die Methode toString der Elemente der gemueseListe verwenden wenn ich nur den Typ IGemuese der Elemente kenne?
bis denne
Guido