Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Spezielles Attribut aus Unterklasse durch Sammlung in Liste (https://www.delphipraxis.net/48073-spezielles-attribut-aus-unterklasse-durch-sammlung-liste.html)

devnull 20. Jun 2005 12:02


Spezielles Attribut aus Unterklasse durch Sammlung in Liste
 
Hiho,

ich habe noch eine Frage zu objektorientierter Programmierung :roll:
Also, wenn ich Objektreferenzen versch. Klassen, also lediglich die Zeiger, in einer Liste ablege
und später mit einer Schleife alle Einträge durchgehe, möchte ich auf spezielle Attribute einer
Unterklasse zugreifen. Also die Oberklasse fasst alle Gemeinsamkeiten zusammen, in der Unterklasse
PKW ist zum Beispiel ein Bild oder so...

Mit Aufruf von
Delphi-Quellcode:
TKraftfahrzeuge ( Liste.Items[i] ).blabla
kann ich Attribute der Oberklasse ansteuern.

Mit der Überprüfung der "Klassenangehörigkeit"
Delphi-Quellcode:
Obj := TKraftfahrzeuge (Liste.Items[i]);
if (Obj as TPKW) then
  TPKW(Obj).bla
kann ich auch direkt die Eigenschaften des PKW erreichen.

Ist das ein zulässiger Befehl??

mfg
devnull

Bernhard Geyer 20. Jun 2005 12:05

Re: Spezielles Attribut aus Unterklasse durch Sammlung in Li
 
Delphi-Quellcode:
Obj := Liste.Items[i] as TKraftfahrzeuge;
if (Obj is TPKW) then
  (Obj as TPKW).bla

alcaeus 20. Jun 2005 12:06

Re: Spezielles Attribut aus Unterklasse durch Sammlung in Li
 
Hallo devnull,

Zitat:

Zitat von devnull
Delphi-Quellcode:
Obj := TKraftfahrzeuge (Liste.Items[i]);
if (Obj as TPKW) then
  TPKW(Obj).bla

fast richtig. Du musst den Delphi-Referenz durchsuchenis-Operator verwenden, um eine Klasse zu pruefen:

Delphi-Quellcode:
if (Obj is TPKW) then
  TPKW(Obj).DoSomething();
In deinem Fall macht das aber wenig Sinn, da du ja auf TKraftfahrzeuge castest, und somit die Pruefung auf TPKW fehlschlaegt (IMO). Greife einfach direkt drauf zu, und es muesste funktionieren ;)

Greetz
alcaeus

devnull 20. Jun 2005 12:12

Re: Spezielles Attribut aus Unterklasse durch Sammlung in Li
 
Oh äh ja, war ein Schreibfehler. Sollte natürlich ein "is" sein... :oops:

Danke nochmals


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz