![]() |
Streamproblem mehrere dateien
Hi,
ich wollte mit folgendem code 2 dateien zusamenfügen und vorher noch den string '13' in die datei schreiben.
Delphi-Quellcode:
Jedoch bekomm ich in der makierten zeile.
procedure TForm1.Test;
var str,str2: TMemoryStream; fs: TFileStream; bla: TStringStream; begin fs:=TFileStream.Create('U:\blubber.big',fmCreate); bla:=TStringStream.Create; bla.WriteString('13'); str:=TMemoryStream.Create; str.LoadFromFile('C:\test.png'); str2:=TMemoryStream.Create; str2.LoadFromFile('C:\test2.png'); fs.CopyFrom(bla,bla.Size); fs.CopyFrom(str,str.Size); //hier fs.CopyFrom(str2,str2.Size); str.Free; str2.Free; bla.Free; fs.Free; end; Die Meldung EReadError mit der Meldung 'Stream-Lesefehler'. |
Re: Streamproblem mehrere dateien
Hi,
Du musst nach LoadFromFile die Position per .Position wieder auf 0 stellen. |
Re: Streamproblem mehrere dateien
Quasi so?
Delphi-Quellcode:
Wenn du das so gemeint hast, dann funzt das immer noch nicht :D
procedure TForm1.Test;
var str,str2: TMemoryStream; fs: TFileStream; bla: TStringStream; begin fs:=TFileStream.Create('U:\blubber.big',fmCreate); bla:=TStringStream.Create; bla.WriteString('13'); str:=TMemoryStream.Create; str.LoadFromFile('C:\test.png'); str.Position:=0; str2:=TMemoryStream.Create; str2.LoadFromFile('C:\test2.png'); str2.Position:=0; fs.CopyFrom(bla,bla.Size); //hier fs.CopyFrom(str,str.Size); fs.CopyFrom(str2,str2.Size); str.Free; str2.Free; bla.Free; fs.Free; end; //Edit: Wenn ich die markierte stelle auskommentiere gehts ohne fehler ... |
Re: Streamproblem mehrere dateien
Wo steht der Dateizeiger nach CopyFrom?
|
Re: Streamproblem mehrere dateien
okay, der fehler schein in dieser zeile zu liegen.
Delphi-Quellcode:
Davor steht fs.position auf 0 und dannach/währendessen fliegt die AV
fs.CopyFrom(bla,bla.Size);
|
Re: Streamproblem mehrere dateien
bla.Position muss wieder auf 0 stehen, denn die CopyFrom-Methode kopiert ab der aktuellen Position, außer, wenn bei Size (dem 2.Parameter) 0 angegeben wird.
|
Re: Streamproblem mehrere dateien
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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