![]() |
VirtualStringTree Objekte speichern
Hallo zusammen,
ich bastel gerade mit einem VST an einer Baumstruktur, in der verschiedene Objekte an Nodes angehängt sind. In etwa so:
Delphi-Quellcode:
Klappt soweit auch ganz gut.
type
TKnotenTyp = (ktAll, ktEx); type TDatObjAll = class(TObject) // <- gibt es hier einen besseren Vorfahr als TObject?? private Zahl1: integer; String1: string; String2: string; end; type TDatObjEx = class(TDatObjAll) private String3: string; end; type PDat = ^TDat; TDat = record KnotenTyp: TKnotenTyp; FObject: TObject; // hier dann entweder TDatObjAll oder TDatObjEx end; Die Frage ist nun, ob es was geeigneteres als TDatObjAll = class(TObject) gibt, daß man beim Speichern und Lesen des Nodes von Datei (Ereignisse:
Delphi-Quellcode:
)
procedure VSTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream);
procedure VSTLoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream); Das ganze Objekt à la .SaveTostream bzw .LoadFromStream abhandeln kann. Gibt es da eine geeignete Klasse? |
AW: VirtualStringTree Objekte speichern
Ich denke den Streamreader/writer wirst Du selbst schreiben müssen, Du hast je keine Properties sondern Klassen, sonst könntest Du etwas in der Art machen:
![]() |
AW: VirtualStringTree Objekte speichern
Zitat:
Ansonsten ist es in den Source von diesen Artikel zu finden:
![]() ![]() Den Record (TDAT, PDAT) mit Knotentyp kannst du weg lassen und direkt die Objekte einhängen (s.h. Demos). Mit dem "is" Operator kannst du dann prüfen, um welches Objekttyp es sich handelt. Durch die Vererbung aber nur bedingt notwendig. Für die Serialisierung der Objekte bietet sich TPersistent als Vorfahre an. In den OnLoad/OnSave kannst du das Object dann einfach Streamen (s.h. Beispiele). Wenn du doch den Record verwenden willst:
Delphi-Quellcode:
Warum definierst du da nicht deinen Basistyp?
FObject: TObject;
Dann brauchst du nicht zu casten. Mit Record wird das Streaming schwieriger. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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