Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 1 Megabyte von einer großen Datei einlesen? (https://www.delphipraxis.net/78965-1-megabyte-von-einer-grossen-datei-einlesen.html)

R0BIN 13. Okt 2006 23:38


1 Megabyte von einer großen Datei einlesen?
 
Hi,


wie kann ich z.B. nur den ersten Megabyte einer 12 Megabyte Datei einlesen und ausgeben lassen...z.B. in einem Memo!

R0BIN

Zacherl 13. Okt 2006 23:44

Re: 1 Megabyte von einer großen Datei einlesen?
 
Wiederum lautet das Zauberwort TFileStream ...

Florian

R0BIN 13. Okt 2006 23:46

Re: 1 Megabyte von einer großen Datei einlesen?
 
ja weiß ich, hab das probiert, denke aber das ist falsch

Delphi-Quellcode:

procedure TForm1.Button4Click(Sender: TObject);

var LStream: TFileStream;
    LBuffer: String;
    laenge : integer;
begin
  laenge := 1024 * 1024 * 1;
  SetLength(LBuffer, laenge);
  LStream := TFileStream.Create(Edit1.Text, fmOpenRead);
  LStream.Read(LBuffer[1], laenge);


  LStream.Free;
  memo1.text := LBuffer;
end;

Christian Seehase 14. Okt 2006 00:29

Re: 1 Megabyte von einer großen Datei einlesen?
 
Moin Robin,

also mal abgesehen vom fehlenden try/finally, um das Freigeben des FileStreams abzusichern, sieht das für die gegebene Aufgabenstellung korrekt aus.

Sunlight7 14. Okt 2006 00:40

Re: 1 Megabyte von einer großen Datei einlesen?
 
Zitat:

Zitat von Florian Bernd
Wiederum lautet das Zauberwort TFileStream ...

Und wiedermal frag ich, warum mit den FileStreams abquälen?

R0BIN 14. Okt 2006 07:27

Re: 1 Megabyte von einer großen Datei einlesen?
 
Danke, es scheint wirklich zu gehen, weiß nicht wo gestern der Fehler drin war....

alzaimar 14. Okt 2006 07:48

Re: 1 Megabyte von einer großen Datei einlesen?
 
Zitat:

Zitat von Sunlight7
Zitat:

Zitat von Florian Bernd
Wiederum lautet das Zauberwort TFileStream ...

Und wiedermal frag ich, warum mit den FileStreams abquälen?

Womit quälst Du Dich denn?

@ROBIN: Es fehlt eine Kleinigkeit: Wenn die Datei doch nicht groß genug ist, arbeitet die Routine nicht korrekt:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  LStream: TFileStream;
  LBuffer: String;
  laenge : integer;

begin
  laenge := 1024 * 1024 * 1;
  SetLength(LBuffer, laenge);
  LStream := TFileStream.Create(Edit1.Text, fmOpenRead);
  Try
    laenge := LStream.Read(LBuffer[1], laenge); // Read liefert die Anzahl wirklich gelesener Bytes
    SetLength (LBuffer, laenge); // Hier wird die Bufferlänge korrigiert
  Finally
    LStream.Free;
  End;
  memo1.text := LBuffer;
end;


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