Seite 1 von 2
Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 09:21
von wdpeter
Guten Morgen,
gibt es eine Funktion, mit der man in einem Textstring Umlaute umsetzen kann?
Viele Grüße
W.-D. Peter
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 14:32
von Falko Müller
Hallo,
das kann man mit der Funktion „ReplaceText“ erreichen.
https://wiki.svws.nrw.de/mediawiki/inde ... eplaceText
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 15:10
von Raffenberg
Hallo Herr(?) Peter, hallo Falko,
Leider funktioniert die ReplaceText (bzw. die ReplaceTextEx)-Funktion nicht mit Umlauten. Es wäre tatsächlich schön, wenn die Funktion auch mit einem erweiterten Zeichensatz funktionieren würde.
Mir ist innerhalb des Reportdesigners keine Möglichkeit bekannt, das zu realisieren.
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 15:39
von Falko Müller
Ok, schon wieder was gelernt. Hatte es nicht getestet, weil ich davon ausging, dass es so klappt. Danke Jens.
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 16:27
von wschrewe
Raffenberg hat geschrieben: Samstag 6. Februar 2021, 15:10Leider funktioniert die ReplaceText (bzw. die ReplaceTextEx)-Funktion nicht mit Umlauten.
Merkwürdig. Bei mir geht das problemlos. Es würde mich auch sehr wundern, wenn das nicht ginge, weil die Funktion intern die Delphi-Routine StringReplace verwendet, und die arbeitet mit Unicode-Strings.
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 18:18
von Raffenberg
Hallo Herr Schrewe,
Bei all meinen Tests funktioniert das nicht. Ich teste in Schild in RichText Feldern. Klappte bei mir auch nicht mit chr(). Ich wäre froh, eine Lösung zu haben. Ich schätze, dass das auch der Grund ist, weshalb die Serienbriefe immer ohne Umlaute realisiert wurden. String-Replace habe ich auch schon probiert, kennt der Reportdesigner leider nicht.
Können Sie Mal eine Beispieldatei zur Verfügung stellen?
Re: Umlaute ersetzen
Verfasst: Samstag 6. Februar 2021, 19:42
von M. Plümper
Hallo Jens,
RichText ist etwas anderes. Da wird ein Richtext ä als Plaintext \'e4 codiert. Die ReplaceText Funktionen arbeiten auf PlainText-Basis. Daher funktioniert ein ersetzen nicht. Und ein Absatz in RichText ist \par, weshalb chr() nicht funktioniert.
Wenn das ein Plaintext ist, kann man einfach folgendes verwenden.
procedure DBText3OnGetText(var Text: String);
begin
Text := ReplaceTextEx(ReplaceTextEx(ReplaceTextEx(Text, 'ä', 'ae'), 'ö', 'oe'), 'ü', 'ue');
end;
Re: Umlaute ersetzen
Verfasst: Sonntag 7. Februar 2021, 13:43
von Raffenberg
Hallo Michael,
danke für deine Erläuterung. Das erklärt alles. Ich hatte die Funktion bisher immer nur in Richtext-Feldern angewandt. Mein Fehler, der hier für Verwirrung gesorgt hat. Entschuldigung dafür. Dann kann ich also ä in Richtext-Feldern mit folgendem Befehl ersetzen:
Text := ReplaceTextEx(Text, '\''e4','ae');
(zwei Hochkommata im Text werden als eins interpretiert)
Re: Umlaute ersetzen
Verfasst: Montag 8. Februar 2021, 12:28
von Christoph Sprung
Guten Tag,
Raffenberg hat geschrieben: Sonntag 7. Februar 2021, 13:43
Dann kann ich also ä in Richtext-Feldern mit folgendem Befehl ersetzen:
Text := ReplaceTextEx(Text, '\''e4','ae');
Das geht, ich vermute aber, dass Sie die Variablenbezeichnung 'Text' durch 'Elementname.RichText' ersetzen müssen.
Codierung von ü:
Codierung von ö:
Re: Umlaute ersetzen
Verfasst: Montag 8. Februar 2021, 12:41
von Raffenberg
Christoph Sprung hat geschrieben: Montag 8. Februar 2021, 12:28
Das geht, ich vermute aber, dass Sie die Variablenbezeichnung 'Text' durch 'Elementname.RichText' ersetzen müssen.
Hallo Herr Sprung,
ja, sie haben natürlich recht.
Ich habe eine schöne Übersetzungstabelle gefunden, welche die Beziehung von anderen Sonderzeichen und rtf-Code auflistet. Ich habe Sie als ersten Treffer bei den Suchbegriffen "ascii-rtf character chart" erhalten.