Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Inis, Arrays oder doch Datenbanken?

  Alt 10. Jan 2007, 16:37
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 )
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat