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