Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array- Variable in Datei speichern (https://www.delphipraxis.net/13452-array-variable-datei-speichern.html)

cook 18. Dez 2003 17:53


Array- Variable in Datei speichern
 
Hallo, folgendes:

Ich will ein zweidimensionales, dynamisches Array
Delphi-Quellcode:
type aRaumposition = array of array of Boolean;
Raumposition: aRaumposition;
in eine Datei speichern. Meine Speicherprozedur sieht folgendermaßen aus
Delphi-Quellcode:
procedure TForm1.Projektspeichern1Click(Sender: TObject);
var wrProjekt: TWriter;
    i: integer;
begin
  RegisterClass(TRaum);
  SaveDialog.DefaultExt:='map';
  SaveDialog.Filter:='Alle Dateien |*.*|Map-Files (*.map)|*.MAP';
  SaveDialog.FilterIndex:= 2;
  if SaveDialog.execute then
  begin
    strFile := TFileStream.Create(SaveDialog.FileName, fmCreate);
    wrProjekt := TWriter.Create(strFile, 2000);
    wrProjekt.WriteString(FRaum.ClassName); // Raumklasse speichern
    FRaum.WriteToFile(wrProjekt); // Raumdaten speichern
  wrProjekt.destroy; //Writer freigeben
  strFile.destroy; // Stream freigeben
end;
end;
Wie krieg ich jetzt die private Variable Raumposition von TForm1 gespeichert? FRaum ist ja eine Instanz und wird über die Prozedur WriteToFile gespeichert, aber wie funzt das bei Variablen?

Danke für eure Hilfe.

jbg 18. Dez 2003 18:03

Re: Array- Variable in Datei speichern
 
Das Array wirst du nicht als gesamtes auf einmal schreiben können, sondern nur Element für Element.

Da hast du zwei Möglichkeiten. Die erste ist die Anzahl der Elemente der einzelnen Dimensionen als Integer schreiben und dann mit WriteBoolean die einzelnen Werte schreiben.
Die andere ist mit Writer.WriteBeginList/Writer.WriteEndList und dann Reader.ReadListBegin/while not Reader.EndOfList/Reader.ReadEndList (oder so ähnliche Namen).

cook 18. Dez 2003 18:20

Re: Array- Variable in Datei speichern
 
Ok. Das is natürlich ne Möglichkeit. Da kommt mir die Frage:
Wie bekomme ich die Größe des Arrays raus?
Also bei Raumposition[i,j] das i und das j. Irgendwie mit getLength oder so??

jbg 18. Dez 2003 18:37

Re: Array- Variable in Datei speichern
 
Delphi-Quellcode:
a: array of array of X;
Length(a) = Anzahl der ersten Dimension
Length(a[x]) = Anzahl der zweiten Dimension für das x-te Element

Delphi-Quellcode:
for i := 0 to Length(a) - 1 { =High(a) } do
  for j := 0 to Length(a[i]) - 1 { =High(a[i]) } do
    Writer.WriteBoolean(a[i, j]);

cook 18. Dez 2003 19:00

Re: Array- Variable in Datei speichern
 
Big THX :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz