![]() |
3 Dimensionale Array of Word Speichern Und Laden?
Wie kann ich diese Array Speichern bzw Laden?
Mein Gedanke,ich weis recht unelegant, in 27 2Dimensionale Tabellen Speichern
Delphi-Quellcode:
type
TIntArray3=Array of Array of Array of Word; public Check : TIntArray3; end; procedure TForm1.FormShow(Sender: TObject); begin SetLength(Check,27,12,65535); end; |
Re: 3 Dimensionale Array of Word Speichern Und Laden?
ich würde an den Anfang der Datei die Dimensionen schreiben und dahinter dann die ganzen Daten am Stück (per TStream).
|
Re: 3 Dimensionale Array of Word Speichern Und Laden?
Irgenwie habsch noch nie wirklich nenn Plan, und dass ist doch bestimmt verkehrt
Delphi-Quellcode:
procedure TForm1.Speichern2Click(Sender: TObject);
begin with SaveDialog1 do begin Filter := 'Textdateien (*.TXT)|*.TXT'; FileName := 'Firmenbrief.txt'; DefaultExt := 'TXT'; Options := [ofOverwritePrompt]; // Sicherheitsabfrage beim Überschreiben if Execute then begin ArraySave3(Check,Filename); end; end; end; procedure TForm1.ArraySave3(bda: TIntArray3; fn: TFileName); begin with TFileStream.Create(fn, fmCreate) do begin WriteBuffer(bda[0], Length(bda)); Free; end; end; |
Re: 3 Dimensionale Array of Word Speichern Und Laden?
Zitat:
Delphi-Quellcode:
Eventuelle Sonderfälle (Array nicht oder nicht vollständig initialisiert) sollte man natürlich noch abfangen. Der Code gilt auch nur dann, wenn alle Vektoren innerhalb einer Dimension exakt gleich lang sind. Anderfalls wird es komplizierter...
Size := Length(Check[0, 0]) * SizeOf(Word);
for i := 0 to High(Check) do for j := 0 to High(Check[i]) do Stream.Write (Check[i, j, 0], Size); Gruß Hawkeye |
Re: 3 Dimensionale Array of Word Speichern Und Laden?
Bei mir gabs ne Fehlermeldung. Zugriffsverletzung im Modul...........
Delphi-Quellcode:
procedure TForm1.Speichern2Click(Sender: TObject);
var Stream:TStream; i,j,size:Integer; begin with SaveDialog1 do begin Filter := 'Textdateien (*.TXT)|*.TXT'; FileName := 'Firmenbrief.txt'; DefaultExt := 'TXT'; Options := [ofOverwritePrompt]; // Sicherheitsabfrage beim Überschreiben if Execute then begin Size :=Length(Check[0, 0]) * SizeOf(Word); for i := 0 to High(Check) do for j := 0 to High(Check[0]) do Stream.Write (Check[i, j, 0], Size); end; end; end; |
Re: 3 Dimensionale Array of Word Speichern Und Laden?
Du solltest das Stream-Objekt natürlich auch erzeugen. :wink:
Delphi-Quellcode:
BTW: glaubst du, daß ".txt" eine gute Erweiterung für eine binäre Datei ist?
procedure TForm1.Speichern2Click(Sender: TObject);
var Stream:TStream; i,j,size:Integer; begin with SaveDialog1 do begin Filter := 'Textdateien (*.TXT)|*.TXT'; FileName := 'Firmenbrief.txt'; DefaultExt := 'TXT'; Options := [ofOverwritePrompt]; // Sicherheitsabfrage beim Überschreiben if Execute then begin Stream := TFileStream.Create(Filename, fmCreate); // <<-- Stream erzeugen try Size :=Length(Check[0, 0]) * SizeOf(Word); for i := 0 to High(Check) do for j := 0 to High(Check[0]) do Stream.Write (Check[i, j, 0], Size); finally Stream.Free; // <<-- Stream freigeben end; end; end; end; Gruß Hawkeye |
Re: 3 Dimensionale Array of Word Speichern Und Laden?
Danke,das hat mich wirklich geholfen,Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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