![]() |
JPEG + StringList -> Stream
Moin,
ich möchte ein JPEG und eine Stringlist in eine Datei speichern. Dass ich Bild und Text später wieder trennen kann schreib ich erstmal die Länge vom datstream(enthält StringList). Dann schreib ich nacheinander beide Streams. Wenn ich das ganze nun ausführe kommt aber bei der Zeile (unten markiert) ein Stream Read Error. Was mach ich falsch?
Delphi-Quellcode:
datstream := TMemoryStream.Create;
gfxstream := TMemoryStream.Create; jpg.SaveToStream(gfxstream); list.SaveToStream(datstream); Stream := TFileStream.Create(apppath + 'test2.ekq', fmCreate); Len := sizeof(datstream); Stream.Write(Len, SizeOf(Len)); Stream.CopyFrom(datstream, sizeof(datstream)); // <<<<<<<--------- Stream Read Error Stream.CopyFrom(gfxstream, sizeof(gfxstream)); Stream.Free; datstream.Free; gfxstream.Free; |
Re: JPEG + StringList -> Stream
Delphi-Quellcode:
wird dir immer 4 zurück geben da eine Objectinstanz ein Pointer ist. Zudem hast du die Position des Streams nicht auf den Anfang zurück gesetzt.
sizeof(DataStream)
|
Re: JPEG + StringList -> Stream
Ok des mit dem SizeOf hab ich in Stream.Size geändert nu gehts. Das Auslesen funktioniert allerdings immernoch nicht... Ich bekomm jedesmal einen StreamReadError :gruebel:
Delphi-Quellcode:
datstream := TMemoryStream.Create;
gfxstream := TMemoryStream.Create; Stream := TFileStream.Create(apppath + 'test2.ekq', fmOpenRead); Stream.Position := 0; Stream.Read(Len, SizeOf(Len)); datstream.CopyFrom(Stream, Len); gfxstream.CopyFrom(Stream, Stream.Size); datstream.Position := 0; gfxstream.Position := 0; mapImage.Bitmap.LoadFromStream(gfxstream); list := TStringList.Create; list.LoadFromStream(datstream); Stream.Free; datstream.Free; gfxstream.Free; |
Re: JPEG + StringList -> Stream
Zitat:
|
Re: JPEG + StringList -> Stream
Achso ich hab gedacht des 2. Argument bei CopyFrom gibt die EndPosition an...
Hab die entsprechende Zeile nun so geändert:
Delphi-Quellcode:
Jetzt gehts Danke!
gfxstream.CopyFrom(Stream, Stream.Size-Len-SizeOf(Len));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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