AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern in BlobField zerschießt MemorySTream

Ein Thema von dataspider · begonnen am 16. Mär 2023 · letzter Beitrag vom 17. Mär 2023
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Speichern in BlobField zerschießt MemorySTream

  Alt 16. Mär 2023, 17:30
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>
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

AW: Speichern in BlobField zerschießt MemorySTream

  Alt 17. Mär 2023, 11: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
Angehängte Grafiken
Dateityp: jpg vorher_nachher.jpg (99,6 KB, 17x aufgerufen)
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Speichern in BlobField zerschießt MemorySTream

  Alt 17. Mär 2023, 11:26
Es gibt auch ein Delphi-Referenz durchsuchenTBytesStream

Vielleicht erkennt die Komponente, wenn ANSI aussreicht und speichert damm im kleinst möglichen Format?


So lange kein Unicode/Umlaute/Sonderzeichen vorkommen, dann reicht es ja aus und wäre auch grundsätzlich egal.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

AW: Speichern in BlobField zerschießt MemorySTream

  Alt 17. Mär 2023, 12:33
Wenn man der falschen Fährte folgt und einen Tunnelblick bekommt, sollte man erst mal abschalten.
Das habe ich jetzt gemacht. War eine Stunde laufen...

Und dann war mir klar, dass das Post nicht derartige Änderungen erzeugen kann.
Also musste irgendwie etwas Anderes in das Feld geschrieben werden.
Schön versteckt im Code gab es noch ein Ereignis ausgelöst vom BeforePost des DataSet,
welches den Inhalt des RichTextEditors ins Feld geschrieben hat.

Damit war immer ein leerer RTF - "Rumpf" in der Datenbank.


So, jetzt keine Depression bekommen, kann passieren...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz