Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi möchte Datei variabeler Länge in Byte-Array laden (https://www.delphipraxis.net/49764-moechte-datei-variabeler-laenge-byte-array-laden.html)

EccoBravo 15. Jul 2005 16:39


möchte Datei variabeler Länge in Byte-Array laden
 
Hallo,
möchte Datei variabeler Länge in Byte-Array laden
+++BD7+++
Frage ist nun die Dimensionierung des Arrays. Ich will ja nicht ein Byte-Array mit 1 000 000 Elementen machen um allen Fällen gerecht zu werden.
Was kann man da machen

Danke für Hilfe

E. B.

marabu 15. Jul 2005 16:42

Re: möchte Datei variabeler Länge in Byte-Array laden
 
So oder ähnlich könnte es funktionieren:

Delphi-Quellcode:
var
  fs: TFileStream;
  iSize: cardinal;
  da: array of byte;
begin
  fs := TFileStream.Create(fileName, fmOpenRead, fmShareDenyWrite);
  SetLength(da, fs.Size);
  fs.Read(da[0], fs.Size);
  fs.Free;
end;
Grüße vom marabu

bigg 15. Jul 2005 17:19

Re: möchte Datei variabeler Länge in Byte-Array laden
 
moin ecco,

das was du vorhast ist zwar möglich, aber normalerweise nicht üblich.
Eine Datei kann unter Windows je nach Dateisystem riesig sein.

Angenommen die Datei ist 100 MB groß, dann hat das Array eine Länge von 104857600 -1 Byte.
D. h. du benötigst min. 100 MB Arbeitsspeicher.

Nun kannst du dieses Problem umgehen, indem du dir einen Puffer anlegst und die Datei nach und nach
einliest. Das zur Theorie, die Suche wird dir sicherlich auch noch einges dazu ausspucken.

BlockRead, Read, TFileStream, File, CreateFile, CreateFileMapping,


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