Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#23

AW: BlobStream in StringGrid speichern

  Alt 23. Mai 2022, 11:30
BlobStream.WriteBuffer(AktData.JpegArray, SizeOf(AktData.JpegArray));

Aber NEIN.

So wird bloß die Array-Variable gespeichert.

Wäre es ein dynmaisches Array, dann bloß der Array-Zeiger
und bei einem statischen Array die Felder, also bloß die Objekt-Zeiger zu den TJpegImage.



Du willst mußt aber den Inhalt (die Daten) der JpegImage speichern, also jeweils SaveToStream.
Soll das dann noch alles zusammen in einen Stream, mußt du die die größe der einzelnen Streams speichern
und dann beim Laden die Streams aufteilen und jeweils in einen MemoryStream umkopieren.
* speichernd an einen Stream anhängen geht
** vorher die alte Position/Ende merken, ein paar Byte (z.B. Integer) als Platzhalter einfügen, mit SaveToStream das Jpeg anhängen und dann den Platzhalter mit der Größe überschreiben
** oder SaveToStream in einen zwischenStream (TMemoryStream) und dann Stream.Size in den Blob und anschließend die Daten mit CopyData rüberkopieren
* beim Laden weiß dann aber LoadFromStream nicht, wo es endet
** also das Size auslesen, die Daten in einen TMemoryStream, MS.Position zurück auf 0 und LoadFromStream(MS)
** und dann so weiter, für die anderen Streams
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Mai 2022 um 12:46 Uhr)
  Mit Zitat antworten Zitat