AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree Objekte speichern

Ein Thema von Berni68 · begonnen am 11. Nov 2010 · letzter Beitrag vom 12. Nov 2010
 
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: VirtualStringTree Objekte speichern

  Alt 12. Nov 2010, 08:56
Delphi-Quellcode:
type
  TKnotenTyp = (ktAll, ktEx);
[...]
type
  PDat = ^TDat;
  TDat = record
    KnotenTyp: TKnotenTyp;
    FObject: TObject; // hier dann entweder TDatObjAll oder TDatObjEx
  end;
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.
Schau dir mal die Demos vom Stammtisch an. Dort ist das (glaube ich) gezeigt.

Ansonsten ist es in den Source von diesen Artikel zu finden:
  • Entwickler Magazin (Ausgabe: 03.08/14.04.2008) Artikel: Von Bäumen und Listen Teil 2 - Komponente VirtualStringTree im Detail
http://entwickler-magazin.de/zonen/m...e,254,p,0.html
Source Download

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:
 FObject: TObject; Warum definierst du da nicht deinen Basistyp?
Dann brauchst du nicht zu casten.

Mit Record wird das Streaming schwieriger.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic (12. Nov 2010 um 09:04 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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