Meine Anmerkungen:
1.) man sollte die
Unit von den uralten Pascalfunktionen AssignFile, Rewrite, read, write,... auf die Klasse
TStream umstellen.
Damit ist man nicht nur auf Dateien beschränkt, sondern kann die Daten aus beliebigen Streams (z.B.
TCP/
IP) lesen und schreiben
2.) diese typisierten Dateien, die nur eine feste Recordstruktur mit fester Länge aufnehmen können ist Technik von Stand 1970.
Wenn man viele (10 - 10000) gleichartige Recorddaten speichern/laden möchte mag das vielleicht die Methode mit dem geringsten Overhead sein,
aber schon allein das Löschen eines einzigen Records verursacht grosses "Tamtam" im Speicher und auf der Platte.
Die Nachteile sind gravierend:
- nicht selbstschreibend (im Gegensatz zu XML)
- nicht portabel (Small/Big Endian Problematik)
- starr und unflexibel
- nicht hierarchisch
- keinerlei Informationen über Version, letztes Änderung, Name der Anwendung die die Daten erzeugt hat
- es gibt keine Viewer und keine Editoren (im Gegensatz zu XML oder INI-Dateien)
Wenn man jetzt versucht, einige dieser Nachteile abzumildern, dann landet man im Prinzip bei einer
dBase-Datei.
Eine dBase-Datei hat einen Header, der grundlegende Dinge wie z.B. Anzahl Datensätze, Aufbau der Felder erklärt.
Zusätzlich hat jeder Record ein Löschflag.
Es gibt Editoren und Viewer für das dBase-Format.
Also wie könnte man sonst seine Applikationsdaten speichern?
da gäbe es
XML - viel Overhead, grosse Dateien, aber sehr flexibel
Hierarchical Data Format
Interchange File Format binäres, platzsparendes Datenformat
SDXF: Structured Data eXchange Format
Structured Storage von Microsoft (im Prinzip ein Dateisystem in einer einzigen
Datei)