Dein Problem ist, dass TPicture.LoadFromStream
nicht so funktioniert wie Du glaubst. Es liest nämlich nicht nur die Zahl von Bytes, die TPicture.SaveToStream
geschrieben hat, sondern alles bis zum Ende des Streams. Es wundert mich, dass Du keine stream read fehler bekommst, wenn die Componente geladen wird.
Nein, so pauschal ist das leider nicht richtig.
TPicture
speichert selber gar nichts, sondern delegiert das intern an die Graphic-Instanz vom Typ
TGraphic
.
Delphi-Quellcode:
procedure TPicture.SaveToStream(Stream: TStream);
begin
if FGraphic <> nil then FGraphic.SaveToStream(Stream);
end;
Und
TGraphic.SaveToStream
ist deklariert als
virtual; abstract;
.
Ob und wie die Grafik nun in den Stream geschrieben (oder wieder gelesen) wird, hängt also von der konkreten Implementierung selber ab.
Ein
TJPEGImage
liest tatsächlich stumpf bis zum Ende, aber ein
TBitmap
liest wirklich nur sich selbst aus dem Stream.
Trotz allem wird man um deinen Code nicht herum kommen, es sei denn man könnte sicherstellen, dass nur
TBitmap
Instanzen verwendet werden.