![]() |
Wie ein komplexes Object In eine Datei speichern?
Ich habe ein Object in diesem befinden sich:
Code:
Ich hoffe soweit ist das erstmal klar :zwinker:
- Einige Felder...
- Einige Objecte mit Feldern... - Einige Eigene Listen wovon in manchen: - Felder sind - Einige Eigene Listen sind wovon in allen: - einigen Felder sind - Objecte mit Feldern sind - Objecte mit Feldern sind Nun will ich dieses eine Object speichern und wieder laden können, und zwar so, dass keinerlei Inhalt verlohren geht... Die Frage ist nur Wie :gruebel: Hat da wer ein paar Tips für mich? Vielleicht einen Lösungsansatz? Irgendwie find ich nichts wirklich brauchbares in der Hilfe :roll: Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
In der Hilfe nicht, aber in der DP:
![]() Greetz alcaeus |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Aber keines dieser xxx Objecte hat published Propertys... Und die meisten davon haben auch keine Write Eigenschaftsdeklaration... Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Eine "normale" Klasse arbeitet immer mit published properties, und nicht mit irgendwelchen public/private Dingen. Glaub mir, der Aufwand die Klasse anzupassen ist geringer, als ein verlässliches Speicherverfahren zu entwickeln. Ich habs selbst bemerkt :zwinker: Greetz alcaeus |
Re: Wie ein komplexes Object In eine Datei speichern?
Hallo,
wenn die Eigenschaft unbedingt public bleiben sollen, dann hilft hier auch DefineProperties weiter. |
Re: Wie ein komplexes Object In eine Datei speichern?
öhm für was brauch ich published Propertys wenn ich mit den Komponenten nicht VCL arbeite ???
Alle Klassen von der einen Klasse dort abzuleiten, damit sie gespeichert werden + alles auf Published Propertys umzustellen ist ein Ding der Unmöglichkeit... Also muß eine andere Alternative her... Für weitere Tips bin ich offen... Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Der Wert einer solchen Eigenschaft ergibt ich doch aus dem inneren Zustand des Objektes. Das Speichern einer solchen Eigenschaft wäre dann redundant. |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Dann musst Du Dir in der Tat etwas anderes einfallen lassen. |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Zitat:
Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Hats du wenigstens eine gemeinsame basisklasse?
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Zitat:
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Also müssen alle Listen neu geschrieben werden, fast alle Objecte und und und... Und nu? Scheinbar muß ich wohl doch eigene komplexe Funktionen zum Speichern schreiben :roll: Zitat:
Hatte das ein bischen anders gemeint... Meinte eigendlich Komponenten... Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
|
Re: Wie ein komplexes Object In eine Datei speichern?
hmm :|
na mal schaun ob das gut geht :drunken: Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
@Kedariodakon: Implementier in deine klassen doch ein interface, welche zum speichern benutzt werden kann. Oder du erstellt dir eine gemeinsame basisklasse. |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Alle Klassen sind von TObject abgeleiten. Alle. Alle. Egal ob mit ode ohne VCL.
Delphi-Quellcode:
e ist automatisch von TObjekt abgeleitet.
type e = class
end;
Delphi-Quellcode:
e ist NICHT von TObject abgeleitet.
type e=object
end; |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Es ist von nichts abgeleitet und OBJECT ist eine Abwärtskompatibilitet mit TurboPascal...Gute allte Zeiten... :love:
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Eine Alternative zu DPCollection findest du
![]() Hier bist du nicht gezwungen von einer bestimmten Klasse abzuleiten. Deine zu speichernden Daten müssen nicht als published Properties vorliegen und sie können auch Readonly sein. Dafür musst du aber mehr Code eintippen als mit DPCollection. Die Tippfaulen können aber auch published-Properties nutzen. Das wird aber im Tutorial nicht gezeigt. Dafür gibt es "nur" ein eigenes Beispielprogramm. |
Re: Wie ein komplexes Object In eine Datei speichern?
Ich weiss nicht ob dir das weiter hilft: :angel2:
Delphi-Quellcode:
uses
TypInfo; procedure ListComponentProperties(Component: TComponent; Strings: TStrings); var Count, Size, I: Integer; List: PPropList; PropInfo: PPropInfo; PropOrEvent, PropValue: string; begin Count := GetPropList(Component.ClassInfo, tkAny, nil); Size := Count * SizeOf(Pointer); GetMem(List, Size); try Count := GetPropList(Component.ClassInfo, tkAny, List); for I := 0 to Count - 1 do begin PropInfo := List^[I]; if PropInfo^.PropType^.Kind in tkMethods then PropOrEvent := 'Event' else PropOrEvent := 'Property'; PropValue := VarToStr(GetPropValue(Component, PropInfo^.Name)); Strings.Add(Format('[%s] %s: %s = %s', [PropOrEvent, PropInfo^.Name, PropInfo^.PropType^.Name, PropValue])); end; finally FreeMem(List); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Clear; ListComponentProperties(ListBox1, ListBox1.Items); end; |
Re: Wie ein komplexes Object In eine Datei speichern?
@Sniper_w: hilft nicht so richtig, da er von TObject ableitet. Gut er könnte {$M+} nutzen.
Also entweder er wählt eins der angebotenen Persistierungs-framework oder er muss sich selbst ein schreiben, was durchaus eine erfahrung sein kann. Ein paar versuche hat jeder ;) |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Ich glaub das übersteigt meine aktuellen Kenntnisse bei weitem... Bye |
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
|
Re: Wie ein komplexes Object In eine Datei speichern?
Zitat:
Zitat:
@Kaderioko: Zeig doch mal ein paar klassenköpfe, damit wir wissen wie die substanze aussieht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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