![]() |
OOP - Wie Struktur für verschiedene Objekte erstellen?
Abend,
ich lese verschiedene Dateien aus. Die gesammelten Daten werden in abgeleiteten TObjects gespeichert (jede ausgelesener Wert entspricht einer Eigenschaft). Die TObjects werden mit einer TList verwaltet. Manche Dateien haben mehr oder weniger Eigenschaften. Beispiel Datei 1:
Code:
Beispiel Datei2:
[bla]
wert1=abc wert2=def
XML-Code:
(Wie man sieht können die Dateien verschiedene Strukturen haben). Ich kann ja jetzt schlecht einfach eine Eigenschaft leer lassen, aber soll ich für jeden Dateityp eine eigene Klasse erstellen? Dann muss wiederrum für jede Klasse eine abgeleitete TList her. Und für jede Liste müssen dann sämtliche Routinen wiederholt implementiert werden. Verfolge ich einen komplett falschen Ansatz? Wie würdet ihr das lösen?
<root>
<wert1>abc</wert1> </root> |
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
Wenn schon, dann würde ich eine TObjectlist nehmen. TObject genau nach Bedarf definieren (quasi wie Record) und diese Objekte in die Liste eintragen. Ich weiß, dass das geht. Ob und wie das mit der TList geht ? :gruebel:
|
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
Zitat:
Delphi-Quellcode:
Jetzt gibt GetObject halt immer ein TMyObject zurück (sozusagen die Basisklasse). Dann muss der Entwickler aber immer selber Casten.
property Items[Index: Integer]:TMyObject read getObject write SetObject default;
Delphi-Quellcode:
Finde ich ziemlich unschön. Gibts da nicht einen besseren weg?
if Component.Items[0] is TMyObjectNr2 then
TMyObjectNr2(Component.Items[0]).Wert1 := 'xyz' else if Component.Items[0] is TMyObjectNr1 then ... ... |
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
Ja. Leite dir eine Klasse von der TObjectList ab, in der du die Property und die Methoden überschreibst. Such mal nach "typensichere Liste".
|
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
Zitat:
|
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
Zitat:
So wie es aussieht spar ich mir mit alle dem nur die Deklaration des Constructor und destructors. Sämtliche Routinen wie z. B. das hinzufügen eines Items oder die Filterfunktion muss ich jedesmal neu deklarieren. Gibts nicht doch eine bessere Lösung? Evtl. eine TCollection anstatt TObjectList? |
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
TCollection ist nur für visuelle Komponenten nötig, weil sie (afaik) bestimmte Methoden für die RTTI implementiert. Die Item-Listen von Menüs, Toolbars usw. sind z.B. alle von TCollection abgeleitet.
|
Re: OOP - Wie Struktur für verschiedene Objekte erstellen?
TCollection ist auch für non-visuelle Objekte praktisch ;)
Neben der Tatsahe, dass man das Streaming nicht neu erfinden muss bekommt man sowohl auf- als auch abwärtskompatibilität geschenkt ;) Such mal nach
Delphi-Quellcode:
:arrow:
dpCollectiion
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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