![]() |
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 |
Re: 1 Megabyte von einer großen Datei einlesen?
Wiederum lautet das Zauberwort TFileStream ...
Florian |
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; |
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. |
Re: 1 Megabyte von einer großen Datei einlesen?
Zitat:
|
Re: 1 Megabyte von einer großen Datei einlesen?
Danke, es scheint wirklich zu gehen, weiß nicht wo gestern der Fehler drin war....
|
Re: 1 Megabyte von einer großen Datei einlesen?
Zitat:
@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 10:50 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