Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein Array Speichern (https://www.delphipraxis.net/3236-ein-array-speichern.html)

Gast 2. Mär 2003 17:25


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!

Luckie 2. Mär 2003 17:30

Such mal hier oder auch mit Google nach typisierten Dateien.

Gast 2. Mär 2003 17:36

Habe ich gemacht, doch ich finde dort nicht das, was ich will!

Luckie 2. Mär 2003 17:46

http://www.google.de/search?q=delphi...-8&hl=de&meta=
Ergebnis mit den Suchbegriffen: delphi, typisierte Dateien. Wenn es das nicht ist, was du suchst, dann mußt du etwas deutlicher werden.

arnoldo 2. Mär 2003 17:52

Hallo hds_chris,

also ich würde das ganze folgendermaßen angehen:

1. den datentyp per record definieren

Delphi-Quellcode:
type daten=record
      titel:string[20];
      nummer:integer;
     end;
     feld=array[1..500] of daten;

var
  Form1: TForm1;
  datei:file of feld;
  liste:feld;
2. Prozeduren schreiben

Delphi-Quellcode:
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;
So, ich hoffe ich konnte Dir helfen...

braingrenade 2. Mär 2003 19:06

Moin hsd_Chris !

Wenn ich dich richtig versanden habe sollte folgendes helfen :

Delphi-Quellcode:
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;
Hoffe das das auch funktioniert!

Christian Seehase 2. Mär 2003 19:13

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 07:20 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