Hallo Zusammen,
ich versuche schon seit Stunden / Tagen etwas zum Laufen zu bringen, aber es gelingt mir nicht. Vielleicht habt Ihr mir einen Hinweis?
Ich habe in einer Basisklasse eine generische Liste gespeichert und schaffe es nicht, in einer Methode der Basisklasse auf die Elemente der Liste zuzugreifen:
Delphi-Quellcode:
TBaseClass = class
FObject : TObject; // hier kann sowohl ein <T> als auch ein TObjectList<T> vorkommen
procedure Print;
end;
procedure TBaseClass.Print;
begin
writeln(FObject.Classname);
end;
Soweit funktioniert das auch ganz gut. Ich bekomme als Ausgabe entweder
'TObjectList<kdb_classes.TkdbUserClass>'
oder
'kdb_classes.TkdbUserClass'
Warum aber kann ich nicht auf das erste Element der ObjektListe zugreifen? Alle Versuche mit Casts schlagen fehl:
Bei
writeln(TObjectList<kdb_classes.TkdbUserClass>(FObject).classname);
bekomme ich die Meldung
Inkompatible Typen.
Bei
writeln(TObjectList<kdb_classes.TkdbUserClass>(FObject)[0].Classname);
ebenso. Wie kann ich auf die Elemente aus der Liste zugreifen?
TObjectList(FObject).Count
funktioniert z.B. und gibt den entsprechenden Wert zurück.
Was ich eigentlich will: Ich möchte das erste Element der Liste, wenn es denn eine Liste ist (das kann ich prüfen über den Classname).
Was mache ich falsch? Wo ist mein Denkfehler?
Vielen Dank schon mal für's Mitdenken
Harald