Zitat von
zecke:
Abgesehen davon, würde ich ungern andere Units einbinden wollen, geschweige denn soetwas komplexes selbst basteln.
Heul' nich' gleich rum...
Delphi-Quellcode:
type
TEinstellung = class(TCollectionItem)
published
property SomeString : String
read fSomeString
write fSomeString;
property BliBlaBlupps : TmxJsCollection read fBliBlaBlupps;
end;
TBliBlaBlupp = class(TCollectionItem)
published
property EinInteger : Integer
read fEinInteger
write fEinInteger;
end;
....
constrcutor TEinstellung...
fBliBlaBlupps := TmxJsCollection.Create(TBliBlaBlupp);
...
Delphi-Quellcode:
var
einstellung : TEinstellung;
einstellungen : TmxJsCollection;
begin
einstellungen := TmxJsCollection.Create(TEinstellung);
einstellung := einstellungen.Add() as TEintellung;
for i := 1 to 100 do
begin
with einstellung.BliBlaBlupss.Add() as TBliBlaBlupp do
EinInteger := i;
end;
einstellungen.SaveToFile('plaintext.txt');
einstellungen.Binary := true;
einstellungen.SaveToFile('binary.bin');
Ausgelesen wird einfauch nur noch das hier und gut ist:
Delphi-Quellcode:
var
einstellung : TEinstellung;
einstellungen : TmxJsCollection;
begin
einstellungen := TmxJsCollection.Create(TEinstellung);
einstellungen.LoadFromFile('plaintext.txt');
for i := 0 to einstellungen.Count - 1 do
begin
einstellung := einstellungen[i] as TEintellung;
writeLn(einstellung.SomeString);
for j := 0 einstellung.BliBlaBlups.Count - 1 do
writeLn('-> ', TBliBlaBlupp(einstellung.BliBlaBlups[j]).EinInteger);
end;
Dat ist hierarchisch und beim Definieren der Klassen zum Halten der Daten bestimmst du die Struktur der Datei gleich mit.
Außerdem kannst du Daten laden, die mit einer vorherigen Version deines Programmes gespeichert wurden, da
DFM streaming abwärtskompatibel ist. (Du kannst ja auch ein D7 Form in BDS2006 öffnen
)