![]() |
Verschiedene TObject-Typen in TObjectList
Hi,
ich würde gerne folgende Situation mit TObjectList und TObject realisieren. Ich habe ein Objekt Auto und Fahrrad:
Delphi-Quellcode:
Ich hätte jetzt gerne eine Sammlung mit den Objekten. Wie mache ich das, wenn ich mich bei der Sammlung nicht auf einen Typen festlegen möchte?
type
TAuto = class(TObject) Marke, Modell : String; AnzahlTueren : Integer; end; type TFahrrad = class(TObject) Marke, Modell : String; Gaenge : Integer; end; |
Re: Verschiedene TObject-Typen in TObjectList
Delphi-Quellcode:
Grüße,
uses contnrs;
{ ... } var ol: TObjectList; begin ol := TObjectList.create(); //hinzufügen: ol.add(auto1); ol.add(fahhrad1); ol.add(auto2); //und wieder bekommen: case ol[0].ClassType of TAuto: showmessage('es ist ein auto'); TFahrrad: showmessage('es ist ein fahrrad'); end; end; Steffen |
Re: Verschiedene TObject-Typen in TObjectList
Zitat:
Die Zeile case ol[0].ClassType of funktioniert aber so nicht..."Ordinaltyp erforderlich" ist die Meldung. Mit IF funktioniert´s aber :-) |
Re: Verschiedene TObject-Typen in TObjectList
Was bei deinem Beispiel nicht funktionieren würde wären zugriffe auf die Eigenschaften Marke und Modell, ohne dabei den Klassentyp zu prüfen. Hier kann man eine gemeinsame Oberklasse extrahieren, z.Bsp. "Fahrzeug"
Delphi-Quellcode:
Dann geht auch sowas:
type
TFahrzeug = class public Marke, Modell : String; end; TAuto = class(TFahrzeug) public AnzahlTueren : Integer; end; TFahrrad = class(TFahrzeug) public Gaenge : Integer; end;
Delphi-Quellcode:
[edit] geht natürlich so nur, wenn ol eine spezielle Objektliste ist. Sonst muss man dabei zumindest auf TFahrzeug casten. [/edit]
ShowMessage(ol[0].Marke + ' ' + ol[0].Modell);
|
Re: Verschiedene TObject-Typen in TObjectList
Zitat:
Zitat:
edit: Aber das Einführen der Oberklasse ist natürlich sinnvoll und besserer Stil. Steffen |
Re: Verschiedene TObject-Typen in TObjectList
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 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