Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Instanz welcher abgeleiteten Klasse? (https://www.delphipraxis.net/35400-instanz-welcher-abgeleiteten-klasse.html)

stoermi 6. Dez 2004 17:04


Instanz welcher abgeleiteten Klasse?
 
Hallo!

Angenommen, ich habe eine abstrakte Klasse Fahrzeug;
Davon leiten sich die Klassen Auto, Fahrrad und Motorrad ab.

Im Quelltext arbeite ich dann mit der Variable einFahrzeug : TFahrzeug!
Kann ich nun irgend wie testen bzw. abfragen, von welcher Sub-Klasse das Fahrzeug nun genau ist, also ob es ein Auto, Fahrrad, etc. ist?

dizzy 6. Dez 2004 17:07

Re: Instanz welcher abgeleiteten Klasse?
 
Der Delphi-Referenz durchsuchenis-Operator dürfte dein Problem lösen ;).

Gruss,
Fabian

nailor 6. Dez 2004 17:08

Re: Instanz welcher abgeleiteten Klasse?
 
du könntest mit dem is/as operator arbeiten. aber das ist in deinem falle wohl nicht im sinne von OOP.

stoermi 6. Dez 2004 17:09

Re: Instanz welcher abgeleiteten Klasse?
 
Zitat:

Zitat von dizzy
Der Delphi-Referenz durchsuchenis-Operator dürfte dein Problem lösen ;).

Gruss,
Fabian

Danke! Wusste doch, dass es etwas ganz simples sein muss, hab aber wohl zwecks Wortwahl nichts gefunden.

jim_raynor 6. Dez 2004 17:10

Re: Instanz welcher abgeleiteten Klasse?
 
Erstmal bekommst du über Classname den Klassennamen als Text.
2. Kannst du den Operator is verwenden (also z.B. Fahrzeug is TAuto). Wobei das auch true ergibt wenn das Objekt widerrum von TAuto abgeleitet ist
3. Über ClassInfo bekommst du die genaue Klasse. Mit einer einfachen Abfrage Fahrzeug.ClassInfo=TAuto kannst du fragen, ob das Objekt wirklich TAuto ist. Ist es abgeleitet von TAuto ergibt der vergleich false (im Gegensatz zu is).

stoermi 6. Dez 2004 17:10

Re: Instanz welcher abgeleiteten Klasse?
 
Zitat:

Zitat von nailor
du könntest mit dem is/as operator arbeiten. aber das ist in deinem falle wohl nicht im sinne von OOP.

Das heißt? Hast du einen besseren Vorschlag?

stoermi 6. Dez 2004 17:25

Re: Instanz welcher abgeleiteten Klasse?
 
Zitat:

Zitat von jim_raynor
3. Über ClassInfo bekommst du die genaue Klasse. Mit einer einfachen Abfrage Fahrzeug.ClassInfo=TAuto kannst du fragen, ob das Objekt wirklich TAuto ist. Ist es abgeleitet von TAuto ergibt der vergleich false (im Gegensatz zu is).

Also mit Fahrzeug.ClassInfo=TAuto funktioniert es nicht!
Da meckert der Compiler! Er weis da nichts mit TAuto anzufangen.
Und ClassInfo gibt mir ja nur einen Pointer...

stoermi 6. Dez 2004 17:31

Re: Instanz welcher abgeleiteten Klasse?
 
Zitat:

Zitat von stoermi
Also mit Fahrzeug.ClassInfo=TAuto funktioniert es nicht!
Da meckert der Compiler! Er weis da nichts mit TAuto anzufangen.
Und ClassInfo gibt mir ja nur einen Pointer...

Gut, mein Fehler! Hatte gerade die Unit bei uses vergessen, mit der ich getestet habe.
Der Compiler bleibt still!
Dennoch klappt der if-Vergleich nicht.

jim_raynor 6. Dez 2004 17:44

Re: Instanz welcher abgeleiteten Klasse?
 
oh sorry. Hatte was verwechselt. Statt ClassInfo nimm ClassType. :duck:

stoermi 6. Dez 2004 18:03

Re: Instanz welcher abgeleiteten Klasse?
 
Zitat:

Zitat von jim_raynor
oh sorry. Hatte was verwechselt. Statt ClassInfo nimm ClassType. :duck:

Danke! So funktionierts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Seite 1 von 3  1 23      

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