Morgen.
Ich habe hier gerade folgendes nerviges Problem:
Ich lese aus einem FileStream und schreibe die Daten in einen MemoryStream:
Delphi-Quellcode:
procedure TTiles.LoadFromFile(FileName: String);
var fs: TFileStream;
memstr: TMemoryStream;
size: Cardinal;
buf: array of Byte;
tgaimg: TTarga;
begin
imglst.Items.Clear;
fs:=TFileStream.Create(FileName, fmOpenRead);
memstr:=TMemoryStream.Create;
tgaimg:=TTarga.Create;
try
fs.Read(FTileWidth, sizeof(Cardinal));
fs.Read(FTileHeight, sizeof(Cardinal));
while fs.Position<fs.Size do
begin
fs.Read(size, sizeof(Cardinal));
setlength(buf, size);
fs.Read(buf, size);
memstr.Write(buf, size);
tgaimg.LoadFromStream(memstr);
memstr.Clear;
tgaimg.SaveToStream(memstr);
with imglst.Items.Items[imglst.Items.Add.Index].Picture do
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromStream(memstr);
end;
memstr.Clear;
end;
setlength(buf, 0);
finally
fs.free;
memstr.free;
tgaimg.free;
end;
end;
Bei memstr.write (Hier Zeile 19) erhalte ich eine
AV. Woran könnte das liegen?