Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: TObjectList unterschiedliche Objekte erkennen?

  Alt 24. Okt 2011, 09: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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