Einzelnen Beitrag anzeigen

hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
62 Beiträge
 
Delphi 10.4 Sydney
 
#1

Vererbung und generische Listen

  Alt 6. Nov 2017, 05:01
Delphi-Version: 5
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
Harald Schmid

Geändert von hschmid67 ( 6. Nov 2017 um 06:40 Uhr)
  Mit Zitat antworten Zitat