in diesem Fall garnicht.
bei "File of fdb" sieht für die ganzen Lese-/Schreibfunktionen das Array nur so aus
Delphi-Quellcode:
type fdb = record
kunden : Pointer;
rechnung : Pointer;
rdaten : Pointer;
angebot : Pointer;
adaten : Pointer;
end;
und mehr würde da auch nicht gespeichert.
Falls es unbedingt eine binäre Datei sein muß, dann "var dfile: File;" oder "var dfile: File of Byte;"
und die Daten mußt du dann selber Stück für stück schreiben/lesen.
ud wie kommt auf den Inhalt an.
theoretisch könnte man es so machen ... jeweils Array-Länge und dann Array-Daten
Delphi-Quellcode:
type tdb =
record
kunden :
array of tkunden;
rechnung :
array of trechnung;
rdaten :
array of trdaten;
angebot :
array of tangebot;
adaten :
array of tadaten;
end;
var db : tdb;
dfile:
File;
Len, i: LongInt;
// schreiben
Len = Length(
db.kunden);
BlockWrite(dfile, Len, SizeOf(Len));
for i := 0
to High(
db.kunden)
do
BlockWrite(dfile,
db.kunden[i], SizeOf(tkunden));
Len = Length(
db.rechnung);
BlockWrite(dfile, Len, SizeOf(Len));
for i := 0
to High(
db.rechnung)
do
BlockWrite(dfile,
db.rechnung[i], SizeOf(trechnung));
...
// lesen
BlockRead(dfile, Len, SizeOf(Len));
SetLength(
db.kunden, Len);
for i := 0
to High(
db.kunden)
do
BlockRead(dfile,
db.kunden[i], SizeOf(tkunden));
BlockRead(dfile, Len, SizeOf(Len));
SetLength(
db.rechnung, Len);
for i := 0
to High(
db.rechnung)
do
BlockRead(dfile,
db.rechnung[i], SizeOf(trechnung));
...
die Schleife könnte man dann vermutlich noch optimieren, indem man alle Array-Daten zusammenhängend abspeichert,
aber wie sehen eigentlich die anderen Typen aus?
tkunden, trechnung, trdaten, tangebot und tadaten ... sind da eventuell auch noch andere "dynamische" Daten enthalten, wie z.B. Strings, andere Arrays und Co.?
PS: man könnte es auch ganz schön (ich weiß, sowas hört man selber von mir, da ich bisher selber zu gern solch binäre Dateien verwendet hatte) mit
XML oder Co. versuchen