Thema: PictureList

Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#7

AW: PictureList

  Alt 15. Jun 2019, 09:00
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.
  Mit Zitat antworten Zitat