![]() |
Array als Datei speichern
Hallo.
Ich möchte mit einem Programm ein Array als Datei abspeichern und auch wieder öffnen und auslesen. Wie kann ich das realisieren? |
Re: Array als Datei speichern
Hi.
Das kommt auf das array an. Statisches oder dynamisches / ein oder mehrdimensional? Ich würde auf jeden fall streams verwenden. Wenn dann noch statisch ist, dann kannste es in einem rutsch in die datei streamen: zb.
Delphi-Quellcode:
cu
var fs:TFileStream;
arr:array[0..99] od integer; ... fs:=TFileStream.create('c:\array.dat',fmCreate); try fs.write(arr,sizeOf(arr)); finally fs.free; end; |
Re: Array als Datei speichern
Danke schonmal.
Das Array ist eindimensional und statisch. Und wie lese ich das Array jetzt wieder aus? |
Re: Array als Datei speichern
Das geht relativ einfach über eine TStringList und FOR-Schleifen:
Delphi-Quellcode:
Sollte auch einfach auf andere Typen anwendbar sein.
var map: array [1..256] of byte;
... procedure Thaupt.Save(Sender: TObject); var StrList: TStrings; i: integer; begin if SaveDialog1.Execute then begin StrList := NIL; try StrList := TStringList.Create; for i:=1 to 256 do begin StrList.Add(IntToStr(map[i])); end; StrList.SaveToFile(SaveDialog1.FileName); finally StrList.Free; end; end; end; procedure Thaupt.Open(Sender: TObject); var StrList: TStrings; i: integer; begin if OpenDialog1.Execute then begin StrList := NIL; try StrList := TStringList.Create; StrList.LoadFromFile(OpenDialog1.FileName); for i:=1 to 256 do begin map[i] := StrToInt(StrList[i]); end; finally StrList.Free; end; end; |
Re: Array als Datei speichern
@H4ndy: Wers möglichst dirty und nicht binär haben will, der soll es so machen, wie du vorschlägst :mrgreen:
Zitat:
Delphi-Quellcode:
cu.
var fs:TFileStream;
arr:array[0..99] od integer; ... if fileExists('c:\array.dat') then begin fs:=TFileStream.create('c:\array.dat',fmOpenRead); try if fs.size >= sizeOf(arr) then fs.read(arr,sizeOf(arr)); finally fs.free; end; end else showMessage('foobar not da'); |
Re: Array als Datei speichern
Zitat:
Quick'n'Dirty ist mein zweiter Vorname :zwinker: @maximov: Klappt das mit dem FileStream auch für 2-dimensionale Arrays? |
Re: Array als Datei speichern
Zitat:
cu. |
Re: Array als Datei speichern
Kann ich denn auch dynamische Array mit FileStream abspeichern?
|
Re: Array als Datei speichern
Zitat:
|
Re: Array als Datei speichern
Da hast du natürlich recht :cyclops:
Ich fake gern dynamische arrays mit statischer deklaration als pointer und um die reservierung kümmere ich mich dann selbst (zb. für DirectX programmierung sehr praktisch)...man muss sich nur die länge der gültigen daten merken. @Hummer: sollte auch kein prob sein. evtl. musst du einfach auf das erste element referenzieren und dann length()-bytes lesen:
Delphi-Quellcode:
oder so.
if length(arr)>0 then fs.write(@arr[0]^,length(arr)*sizeOf(Element));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz