Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei lesen auf "einmal" (https://www.delphipraxis.net/67973-datei-lesen-auf-einmal.html)

sniper_w 22. Apr 2006 16:39


Datei lesen auf "einmal"
 
Ich möchte eine Datei "auf einmal" einlesen. So in etwa:
Delphi-Quellcode:
var FilePointer:Pointer;
begin
  FilePointer := LoadFileAufEinmal( FileName:string );

markusj 22. Apr 2006 16:40

Re: Datei lesen auf "einmal"
 
???
Ich versteh nicht was du willst, lege dir aber mal einen TMemoryStream oder ein TFileStream nahe^^

mfG

Markus

sniper_w 22. Apr 2006 16:43

Re: Datei lesen auf "einmal"
 
Das ganze binäre Inhalt einer Datei von HD zur RAM und ein Pointer auf den Anfang.

SirThornberry 22. Apr 2006 16:51

Re: Datei lesen auf "einmal"
 
nimm einfach einen TMemoryStream und verwende die Methode LoadFromStream. Der Memorystream müsste dann noch ein property "memory" (oder so ähnlich) haben womit du einen pointer auf die Daten bekommst.

markusj 22. Apr 2006 16:53

Re: Datei lesen auf "einmal"
 
Zonk!!!

Der TMemoryStream muss mit LoadFromfile gefüllt werden!!!
Ansonsten kann man schon ganz bequem auf die einzelnen Werte zugreifen ... read & readBuffer!
Oder du nimmst deinen Pointer, der unter Memory zu finden ist.

mfG
Markus

elliott 27. Apr 2006 17:38

Re: Datei lesen auf "einmal"
 
Zitat:

Zitat von sniper_w
Ich möchte eine Datei "auf einmal" einlesen. So in etwa:
Delphi-Quellcode:
var FilePointer:Pointer;
begin
  FilePointer := LoadFileAufEinmal( FileName:string );

Wenn du das so haben willst, dann musst du schon selbst diese Funktion "LoadFileAufEinmal" schreiben.
Das macht man mit FileOpen, dann mit FileSeek die Groesse der Datei holen, dann einen Speicherplatz mit GetMem (über den gewünschten pointer) reservieren und zum Schluss noch mit FileRead die Datei "AufEinmal" einlesen.......

Der_Unwissende 27. Apr 2006 17:44

Re: Datei lesen auf "einmal"
 
Zitat:

Zitat von markusj
Zonk!!!

Der TMemoryStream muss mit LoadFromfile gefüllt werden!!!

HI,
warum? Also ich hab erst vorhin LoadFromStream verwendet und wüßte jetzt nicht warum ich LoadFromFile hätte verwenden sollen. Der Sinn von Streams ist es gerade, dass sie durchaus von dem konkreten Speicherort (RAM, File, kommt aus dem Netz) abstrahieren können. Sollte es doch ein guten Grund geben nur LoadFromFile zu nehmen, müsste ich wohl einigen Kunden etwas erklären (also hoffe ich doch mal dass es den auch weiterhin nicht gibt!)

Gruß Der Unwissende

Dax 27. Apr 2006 17:59

Re: Datei lesen auf "einmal"
 
Zumal .LoadFromFile nix anderes tut als nen FileStream zu erstellen und den ganzen Inhalt der Datei in den Speicher zu kopieren^^

shmia 27. Apr 2006 18:00

Re: Datei lesen auf "einmal"
 
In einem Rutsch in einen String laden:
Delphi-Quellcode:
function FileToString(const FileName: string): AnsiString;
var
  fs: TFileStream;
  Len: Integer;
begin
  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    Len := fs.Size;
    SetLength(Result, Len);
    if Len > 0 then
      fs.ReadBuffer(Result[1], Len);
  finally
    fs.Free;
  end;
end;

idontwantaname 27. Apr 2006 18:00

Re: Datei lesen auf "einmal"
 
@Der_Unwissende: Naja, irgendwie muss man ja die Datei in der Speicher holen, oder ?? ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.
Seite 1 von 2  1 2      

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