Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 10000 Werte in DATEI speichern (https://www.delphipraxis.net/80791-10000-werte-datei-speichern.html)

Tumm 15. Nov 2006 12:46


10000 Werte in DATEI speichern
 
Hi

Ich bin gerade dabei ein Spiel zu schreiben, und das Problem ist, dass ich 10000 Werte speichern will. Ich habe mir das Thema angeschaut, weil ich schon nach einer Möglichkeit gesucht habe.
Es sind 10000 Integer-Werte (Möglichst auch LongInt). Meine ini-Datei hatte keine Lust sie in einer Schleife in sich rein zu stopfen...

Tumm

Neutral General 15. Nov 2006 12:51

Re: 10000 Werte in DATEI speichern
 
Machs mit nem MemoryStream... 10000 Integers in eine Ini-Datei.. :shock: :kotz:

Schreiben
Delphi-Quellcode:
var MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
Ms.Write(AInteger, SizeOf(Integer);
...// soviel du willst.. auch inner Schleife wenn du willst/kannst
Ms.SaveToFile(Filename);
Ms.Free;
end;
Lesen:

Delphi-Quellcode:
var MS: TMemoryStream;
    Buffer: Integer; // Oder auch direkt die Variable benutzen wos reinsoll (keine properties!)
begin
MS := TMemoryStream.Create;
Ms.LoadFromFile(Filename);
Ms.Read(Buffer, SizeOf(Integer);
...// soviel du willst.. auch inner Schleife wenn du willst/kannst
Ms.Free;
end;
Is jetzt ohne try-except/finally... Neutral Generäle brauchen sowas nicht :oops:

Gruß
Neutral General

Der_Unwissende 15. Nov 2006 13:03

Re: 10000 Werte in DATEI speichern
 
Hi,
in was für einer Struktur liegen denn deine Werte vor?
Wenn es sich um ein Array handelt, dann kannst du das auch gleich in einem Rutsch lesen oder schreiben, ist dann um einiges schneller:

Delphi-Quellcode:
procedure saveToFile(const Data : TIntegerDynArray; const FileName : String);
var fs : TFileStream;
begin
  if length(Data) > 0 then
  begin
    fs := TFileStream.Create(FileName, fmCreate or fmShareExclusive);

    try
      fs.Position := 0;
      fs.Write(Data[0], sizeOf(Data[0]) * length(Data));
    finally
      fs.Free;
    end;
end;
Lesen dann analog.

Gruß Der Unwissende

Tumm 15. Nov 2006 13:16

Re: 10000 Werte in DATEI speichern
 
Gute Idee! Is so. Danke. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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