Guten Morgen,
wenn du Daten aus einer Struktur persistent machst, dann musst du in der Regel auch die Meta-Information persistent machen. In deinem Fall muss also aus den gespeicherten Daten hervorgehen, an welcher Stelle deines mehrdimensionalen Arrays sie wieder eingebaut werden sollen. Darüberhinaus musst du die Länge der einzelnen Strings kenntlich machen - durch Voranstellen einer Längeninformation oder durch Begrenzungszeichen.
Hast du dich schon entschieden, ob du ein binäres oder textuelles Speicherformat verwenden möchtest? Ich würde beim Textformat ein strukturiertes Format (
XML) wählen, aber du kannst ein multidimensionales Array auch linear speichern:
Delphi-Quellcode:
type
i, j, k, index: Integer;
begin
// ...
temp := IntToStr(Length(Liste)) + sLineBreak;
f.Write(temp[1], Length(temp));
for i := 0 to Pred(Length(Liste)) do
begin
temp := IntToStr(Length(Liste[i])) + sLineBreak;
f.Write(temp[1], Length(temp));
for j := 0 to Pred(Length(Liste[i])) do
begin
temp := IntToStr(Length(Liste[i, j])) + sLineBreak;
f.Write(temp[1], Length(temp));
for k := 0 to Pred(Length(Liste[i, j])) do
begin
temp := IntToStr(Liste[i, j, k].Count) + sLineBreak;
f.Write(temp[1], Length(temp));
for index := 0 to Pred(Liste[i, j, k].Count) do
begin
temp := Liste[i, j, k][index] + sLineBreak;
f.Write(temp[1], Length(temp));
end;
end;
Wenn du dir die erzeugte Ausgabedatei in einem Editor anschaust und ich nicht zuviele Tippfehler eingebaut habe, dann erkennst du, dass die Dimensionsangaben und die Items deiner StringListen zeilenweise so abgelegt sind, dass du beim Wiedereinlesen zuerst die Information erhältst, die du zum Dimensionieren des Arrays benötigst.
Grüße vom marabu