Entwickler-Ecke
Dateizugriff - RTF-Text mit Formatierungscode wieder lesbar machen
Gagga - Di 05.05.20 19:52
Titel: RTF-Text mit Formatierungscode wieder lesbar machen
Hallo!
Hat jemand einen Tipp, wie ich RTF-Text mit Formatierungscode wieder als lesbaren, formatierten Text in das Richedit bekomme?
Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| {\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}{\f2\fnil\fcharset0 Tahoma;}} {\colortbl ;\red255\green0\blue0;} \viewkind4\uc1\pard\ltrpar\nowidctlpar\sa200\sl276\slmult1\b\f0\fs28 Hallo!\par \b0\fs22 Kann keiner \cf1\b helfen\cf0\b0 ?\b\par \pard\ltrpar\nowidctlpar\b0\f1\fs16\par \pard\ltrpar\f2\par } |
Normalerweise sollte das mit
lines.loadfromfile klappen, aber in dem Fall nicht. Der Code ist das Ergebnis von
Delphi-Quelltext
1: 2: 3: 4:
| RE1.Lines.SaveToStream(stream); str := StringReplace(stream.DataString,'einer', 'keiner', [rfReplaceAll, rfIgnoreCase]); RE1.text := str; RE1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+ 'test23.rtf'); |
Ich versuche den Weg über Stream, da im Text formatierte Platzhalter sind, deren Ersetzungen die Formatierungen übernehmen sollen.
Habe alternativ noch eine Routine, in der die Textattribute gespeichert werden, wollte es aber mal auf diese Weise probieren.
Gruß
Gagga
Moderiert von Th69: Delphi-Tags hinzugefügt
Gagga - Mi 06.05.20 19:48
Hallo!
Zitat: |
Funktioniert es denn ohne die Text-Zuweisung? |
Die Frage verstehe ich nicht.
Ja, steht sie.
Das verrückte ist, dass dann, wenn ich den Inhalt der Datei test23.rtf mit dem Formatierungscode nochmal über einen normalen Text-Editor als Datei speicher - egal mit welcher Endung - kann ich sie im selben Programm als rtf-Datei öffnen - also mit formatiertem Text.
Dann kann doch mit dem Speichern über Lines.SaveToFile... etwas nicht stimmen, oder?
Gruß
Gagga
Gagga - Do 07.05.20 12:09
SaveToFile und
LoadFromFile klappt. Aber wenn ich aus dem RichEdit maile, macht er aus € ein ?. Die Zeichen < und > werden ignoriert, da kommen Leerstellen an. Auch das ist ein Thema, dass ich vor Wochen verfolgt hatte, auf charset ISO-irgendwas gestoßen bin, aber erstmal ad acta gelegt habe.
Offensichtlich gibt es da aber einen Zusammenhang. Muss ich meinen Richedit-Inhalt erst einmal in einen anderen Unicode-Zeichensatz wandeln und wenn ja, wie?
Gruß
Gagga
Moderiert von Th69: Delphi-Tags hinzugefügt
Gagga - Do 07.05.20 17:38
Also das zeichenkonforme Mailen klappt mit
ContentType := 'text/plain; charset=UTF-8'und
ContentType := 'text/html; charset=UTF-8'.
Das Problem mit dem RichEdit-Feld habe ich jetzt auch gelöst, nachdem ich ewig mit den Parametern beim Enconding experimentiert habe. Wie häufig, ist die Lösung ganz trivial. In dem Code im Ausgangspost
Delphi-Quelltext
1: 2: 3: 4:
| RE1.Lines.SaveToStream(stream); str := StringReplace(stream.DataString,'einer', 'keiner', [rfReplaceAll, rfIgnoreCase]); RE1.text := str; RE1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+ 'test23.rtf'); |
muss PlainText vor dem Speichern auf true gestellt werden und vor dem Laden auf false.
Dann funzzt es.
Wieder einmal herzlichen Dank an Dich, Th69!
Gruß
Rüd
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!