Hallo,
persönlich würd ich mich für einen Stream und Twriter und Treader entscheiden
so als idee:
Delphi-Quellcode:
Var stream:Tstream;
writer:Twriter;
ip,ig:integer;
begin
Stream:=TFilestream.create(Dateiname,fmcreate);
try
writer:=TWriter.Create(stream,4096);
try
Writer.WriteInteger(aktuelleVersion);
//erstmal ne "Version reinschreiben, hier kannst du dann später beim auslesen darauf reagieren
// (z.B. weil du ab Version5 10 statt 4 Personen hast)
for ip:=1
to 4
do
begin
Writer.WriteStr(Person[
ip].
name);
Writer.WriteInteger(Integer(Person[
ip].Geschlecht));
Writer.WriteInteger(Person[
ip].groesse);
//Länge des Arrays reinschreiben
Writer.WriteInteger(length(Person[
ip].gewichte));
//und nun die einzelnen Gewichte
for ig:=Low(Person[
ip].gewichte)
to High(Person[
ip].gewichte)
do
begin
Writer.WriteDate(Person[
ip].gewichte[ig].iDatum);
Writer.WriteDouble(Person[
ip].gewichte[ig].iGewicht);
end;
end;
finally
writer.Free;
end;
finally
Stream.free;
end;
end;
Das kannst du dir immer noch weiter in einzelne Procs zu besseren Lesbarkeit aufteilen.
Persönlich würde ich aber auch person als dynamisches Array anlegen und statisches und dynamisches nicht mischen.
Auslesen dann genaus andersrum mit Treader und readXYZ.
Gruß Frank