![]() |
2 dimensionalen Array in Datei speichern und wieder laden
Hi, ich hab einen 2d-Array
Delphi-Quellcode:
den ich in einer externen Datei speichern und wieder daraus laden möchte.
f:array[1..12,1..2] of string;
Kann mir jemand sagen wie ich das am besten anstelle? |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
Delphi-Quellcode:
const
IDENT_TMYARRAY = 'TMyArray'; BUF_SIZE = 4096;
Delphi-Quellcode:
type
TMyArray = array[1..12, 1..2] of String;
Delphi-Quellcode:
procedure SaveToFile(const MyArray: TMyArray; const FileName: String);
var Stream: TFileStream; Writer: TWriter; I, J: Integer; begin Stream := TFileStream.Create(FileName, fmCreate); try Writer := TWriter.Create(Stream, BUF_SIZE); try Writer.WriteSignature; Writer.WriteIdent(IDENT_TMYARRAY); for I := 1 to 12 do for J := 1 to 2 do Writer.WriteString(MyArray[I, J]); finally Writer.Free; end; finally Stream.Free; end; end;
Delphi-Quellcode:
procedure LoadFromFile(var MyArray: TMyArray; const FileName: String);
var Stream: TFileStream; Reader: TReader; I, J: Integer; begin Stream := TFileStream.Create(FileName, fmOpenRead); try Reader := TReader.Create(Stream, BUF_SIZE); try Reader.ReadSignature; if Reader.ReadIdent <> IDENT_TMYARRAY then raise Exception.Create(FileName + ' ist keine gültige Datei vom Typ TMyArray.'); for I := 1 to 12 do for J := 1 to 2 do MyArray[I, J] := Reader.ReadString; finally Reader.Free; end; finally Stream.Free; end; end; |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
danke schön :)
|
Re: 2 dimensionalen Array in Datei speichern und wieder lade
Der Code funktioniert einwandfrei bei dateien die ich vorher mit SaveToFile erstellt habe.
Will ich jetzt aber, ich bin ja dumm, eine beliebige Datei mit LoadFromFile öffnen, passiert folgendes:
Bitte um Hilfe! Danke |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
ReadSignatur und ReadIdent prüfen, ob der Stream mit den gespeicherten Daten übereinstimmt. Damit nicht versehentlich falsche Daten geladen werden, die nicht zu deinem Array passen.
|
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Windows API" nach "Sonstige Fragen zu Delphi" verschoben.
Hat nichts mit Windows-API zu tun |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
Die Exception dürfte zwecks des try-finally-blocks aber auch nur beim starten aus delphi raus passieren.
im kompilierten programm wird wohl keine kommen air |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
@Airblader: Doch! In IDE und außerhalb!
Bei einer beliebigen Datei welche die Signatur und das Ident nicht enthält, werden die oben genannten Exceptions ausgelöst, was kann ich dagegen machen. Ich möchte vor allem Spider bitten, sich das anzuschauen! Danke! |
Re: 2 dimensionalen Array in Datei speichern und wieder lade
Zitat:
|
Re: 2 dimensionalen Array in Datei speichern und wieder lade
also das is vielleicht ein bischen einfacher:
Delphi-Quellcode:
type TMyArray = array[0..12,0..2] of integer;
procedure Save(Arr: TMyArray); var f: file of TMyArray; begin AssignFile(f, FILENAME); Rewrite(f); try Write(f,Arr); finally CloseFile(f); end; end; procedure Load(var Arr: TMyArray); var f: file of TMyArray; begin AssignFile(f, FILENAME); Reset(f); try Read(f,Arr); finally CloseFile(f); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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-2025 by Thomas Breitkreuz