![]() |
Ein Array Speichern
Hey!
Ich habe ein riesen Problem! Ich habe ein Array[1..500] und dieses möchte ich jetzt gerne in eine .dat speichern und danach wieder öffnen können! Ein Array besteht aus selbst definierten Typen! Aus: Titel(String), Nummer(Integer), ... Helft mir bitte! Bye! |
Such mal hier oder auch mit Google nach typisierten Dateien.
|
Habe ich gemacht, doch ich finde dort nicht das, was ich will!
|
![]() Ergebnis mit den Suchbegriffen: delphi, typisierte Dateien. Wenn es das nicht ist, was du suchst, dann mußt du etwas deutlicher werden. |
Hallo hds_chris,
also ich würde das ganze folgendermaßen angehen: 1. den datentyp per record definieren
Delphi-Quellcode:
2. Prozeduren schreiben
type daten=record
titel:string[20]; nummer:integer; end; feld=array[1..500] of daten; var Form1: TForm1; datei:file of feld; liste:feld;
Delphi-Quellcode:
So, ich hoffe ich konnte Dir helfen...
procedure laden;
begin assignfile(datei,'daten.dat'); reset(datei); read(datei,liste); closefile(datei); end; procedure speichern; begin assignfile(datei,'daten.dat'); rewrite(datei); write(datei,liste); closefile(datei); end; |
Moin hsd_Chris !
Wenn ich dich richtig versanden habe sollte folgendes helfen :
Delphi-Quellcode:
Hoffe das das auch funktioniert!
Type Tzeug = record
Titel : String[30] //der String muss begrenzt sein , sonst funzt's nich Nummer : Integer; end; var zeug : array[1..500 ] of Tzeug; procedure schreiben(pfad : string ); var schreibstream : Tfilestream ; var i : integer ; begin try schreibstream := Filestream.Create(pfad,fmopenwrite or fmcreate); // öffnet oder macht eine neue datei mit namen pfad zum schreiben for i := 1 to 500 do begin schreibstream.writebuffer(zeug[i],sizeof(zeug[i])); //schreibt zeug in die Datei end; except showMessage('Hat nich geklappt'); schreibstream.free ; //schließt die datei end; procedure lesen(pfad : string); var lesestream : Tfilestream ; var i : integer ; begin try lesestream := Filestream.Create(pfad,fmopenread); // öffnet oder macht eine neue datei mit namen pfad lesestream.position := 0; //soll von anfang an lesen for i := 1 to 500 do begin lesestream.readbuffer(zeug[i],sizeof(zeug[i])); //lies zeug aus die Datei end; except showMessage('Hat nich geklappt'); lesestream.free ; //schließt die datei end; |
Moin Zusammen,
sollte auch so gehen:
Delphi-Quellcode:
type daten=record
titel:string[20]; nummer:integer; end; feld=array[1..500] of daten; var f : feld; // Schreiben, lesen analog var fs : TFileStream; begin fs := TFileStream.Create(ExtractFilePath(paramstr(0))+'Datei.dat', fmCreate or fmOpenReadWrite); try fs.Write(f,SizeOf(f)); finally FreeAndNil(fs); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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