AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei lesen auf "einmal"

Ein Thema von sniper_w · begonnen am 22. Apr 2006 · letzter Beitrag vom 28. Apr 2006
 
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#12

Re: Datei lesen auf "einmal"

  Alt 27. Apr 2006, 21:39
Ich hab mal noch 2 Möglichkeiten (habe beide schnell hergeleitet, die Theorie sollte stimmen, evtl. Tippfehler ausbessern

1. Möglichkeit, mit einem Pointer:
Delphi-Quellcode:
procedure LoadFromFileComplete(const FN: TFileName);
var
 Datei: Pointer; //sollte jenachdem ob du ihn in anderen functions und procedures brauchst evtl. global sein
 FS: TFileStream;
begin
 FS := TFileStream.Create(FN, fmOpenRead);
 try
   GetMem(Datei, FS.Size); //reserviert Speicher, der mit FreeMem() wieder freigegeben werden muss!
   FS.ReadBuffer(Datei, FS.Size);
 finally
   FS.Free;
 end;
end;
2. Möglichkeit mit nem TMemoryStream, hier bin ich mir ne so sicher, ob das alles so richtig oder wichtig ist :
Delphi-Quellcode:
procedure LoadFromFileComplete(const FN: TFileName);
var
 Datei: TMemoryStream;//sollte jenachdem ob du ihn in anderen functions und procedures brauchst evtl. global sein
//dann muss natürlich das Erzeugen und das Freigeben auch im OnCreate und im OnDestroy oder so passieren
 FS: TFileSream;
begin
 FS := TFileStream.Create(FN, fmOpenRead);
 try
  Datei := TMemoryStream.Create;
  try
    Datei.SetSize(FS.Size);//die zwei zeilen sind evtl. überflüssig
    Datei.Seek(0, soFromBeginning);// ||
    Datei.CopyFrom(FS, 0);//0 sollte für alles stehen
//wenn du darauf jetzt noch nen Pointer brauchst musst du dir einen deklarieren und mit Datei.Memory gleichsetzen
  finally
    Datei.Free;
  end;
 finally
   FS.Free;
 end;
end;
Aber die obere Methode sollte gehn!

PS: Solltest du mal große Dateien mit Streams bearbeiten bergiss nicht den Int64 statt nem Integer zu nehmen wenn du Längenangaben liest!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 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