![]() |
Datei in Stream einlesen - Liest nur 0 Bytes
Hallo,
ich möchte eine Datei in einen Stream einlesen um danach Bytweise die Inhalte zu ändern. Ich verwende folgenden Code:
Delphi-Quellcode:
Leider gibt mir das "MyFilestream.read" immer 0 zurück.
...
procedure Tfrm_chainAutoProg.LB_ElementClick(Sender: TObject); var sFileName : string; MyFilestream : tfilestream; iRealReadBlocks : longint; iFileSize : integer; begin // Datei laden sFileName := sSourceFileName; MyFilestream := tfilestream.create(sFileName , fmOpenRead or fmShareDenyNone); iFileSize := MyFilestream.Size; setlength(aFileBlockBuffer, iFileSize); iRealReadBlocks := MyFilestream.read(aFileBlockBuffer, iFileSize); MyFilestream.free; if (iRealReadBlocks <> iFileSize) then ... Ich stehe auf dem Schlauch ... :gruebel: |
Re: Datei in Stream einlesen - Liest nur 0 Bytes
Probier mal
MyFilestream.Position := 0; vor dem Read bzw las die MyFilestream.size anzeigen. |
Re: Datei in Stream einlesen - Liest nur 0 Bytes
Also der Tipp mit MyFilestream.Position := 0;
hat nicht geholfen. Liest immer noch nur 0 Bytes ein. Die Size des Streams ist richtig. Daran mache ich ja die Array-Größe fest. |
Re: Datei in Stream einlesen - Liest nur 0 Bytes
Dynamische Arrays sind nur Zeiger, für das Auslesen aus dem Stream musst du daher aFileBlockBuffer[0] angeben.
|
Re: Datei in Stream einlesen - Liest nur 0 Bytes
Super. Klappt.
Danke. |
Re: Datei in Stream einlesen - Liest nur 0 Bytes
1. Nach dem anlegen eines TFileStreams (oder auch Memorystreams) ist die Position immer 0
2. Nach der nun ausgehandelten Fehlerquelle, sollte aber iRealReadBlocks trotzdem einen Wert von mehr als 0 enthalten haben. Er hat es zwar sonstwo hingelesen, aber er hat gelesen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 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