Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Speichern in BlobField zerschießt MemorySTream

  Alt 17. Mär 2023, 12:03
Ich dachte immer, TMemoryStream kümmert sich nicht um EnCoding.
Das ist Richtig, aber vielleicht LNewText oder GetNewText?

AnsiString ??
RawByteString
oder besser noch TBytes bzw. TArray<Byte>
Ja, ich habe jetzt LNewText als TBytes definiert und weise den string aus GetNewText über LNewText := BytesOf(LMergeField.GetNewText); zu.
Das sollte jetzt wohl, wenn ich euch richtig verstanden habe, die richtige Herangehensweise sein.

Ich habe mir den Feldinhalt des Blobs jetzt vor und nach dem Post in eine Datei schreiben lassen.
Delphi-Quellcode:
  LStream.Clear;
  TBlobField(DM.qryMain.FieldByName('DOKUMENT')).SaveToStream(LStream);
  LStream.SaveToFile('1.rtf');
  DM.qryMain.Post;
  LStream.Clear;
  TBlobField(DM.qryMain.FieldByName('DOKUMENT')).SaveToStream(LStream);
  LStream.SaveToFile('2.rtf');
Das Post ist also die Ursache. Und man sieht am Screenshot, dass das RTF scheinbar "verbessert" wird.
Nach dem Post fehlt schon das "ansi" (im Screenshot markiert).
Ich habe keine Ahnung, was IBObjects da macht.

Ich lade den konvertierten Stream nicht mehr ins BlobField
sondern Stream -> RichEditControl -> Stream -> BlobField.

Damit funktioniert es und das RichEditControl wandelt gleich das Bild in nicht binär um.

Ich hätte gern verstanden, was da schief läuft, aber - was solls...

Danke Happy coding
Danke himitsu
Miniaturansicht angehängter Grafiken
vorher_nachher.jpg  
Frank Reim
  Mit Zitat antworten Zitat