Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.073 Beiträge
 
Delphi 12 Athens
 
#15

AW: TObjectList unterschiedliche Objekte erkennen?

  Alt 24. Okt 2011, 10:51
Dein Problem liegt hier:
Code:
...
 Auto := TAuto.Create;
 Auto.FHersteller := 'BMW';

 Coupe := TCoupe(Auto);
 Coupe.FSitze := 4;

 AutoListe.Add(Coupe);
...
Du erzeugst ein TAuto und castest dann in eine Unterklasse, speicherst aber immer "nur" ein TAuto. Sollte eigentlich so heißen:
Wenn du keine Ahnung vom Casten hast, bzw. es noch nicht richtig kannst/verstehst, dann verwende keine harten Casts ala TCoupe(Auto) ,
sondern die weicheren Casts ala (Auto as TCoupe) , den so wäre dir das Problem sofort aufgefallen, weil es im Programm entsprechend geknallt hätte.

PS: Dein Pech war, daß der Zugriff auf das falsch gecastete Objekt nicht auch schon geknallt hatte, denn wenn FSitze erst in TCoupe deklariert wurde, dann gibt es dieses Feld in TAuto nicht, und somit greifst du auf etwas zu, was es nicht gibt, welches nicht unbedingt Gesund ist, für ein Programm.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (24. Okt 2011 um 10:59 Uhr)
  Mit Zitat antworten Zitat