Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Text konvertieren
hRb - Mi 19.02.20 11:52
Titel: Text konvertieren
Hallo zusammen,
Es gibt in Delphi einige Standard-Text-Konvertierungen, wie upper- und lowercase.
Ich möchte jedoch einen Text derart konvertieren, dass jeder kleine Buchstabe groß und jeder große Buchstabe klein wird. Dabei sollte die gesamte ANSI-Tabelle berücksichtigt werden - also auch Umlaute.
1. Habe ich eine Standardfunktion in Delphi 10 übersehen die das leistet?
2. Könnte Funktion CharInSet nutzen. Gibt es etwas "eleganteres"?
3. Hinweis: sollte bei AnsiString, wie auch bei String (UTF8, UTF16) funktionieren.
Danke für Tipps hRb
Moderiert von Narses: Topic aus Grafische Benutzeroberflächen (VCL & FireMonkey) verschoben am Mi 19.02.2020 um 12:52
jasocul - Mi 19.02.20 12:06
Eine Standardfunktion ist mir nicht bekannt.
Ich würde den Text zwei mal verwalten.
Einmal das Original und einmal der Arbeitstext.
Im Arbeitstext würde ich pauschal alles in eine Richtung umwandeln. Idealerweise das, was häufiger vorkommt.
Danach würde ich die beiden Texte zeichenweise vergleichen und wenn die Zeichen gleich sind, die entsprechend andere Umwandlung für das jeweilige Zeichen machen.
hRb - Mi 19.02.20 17:59
Ok, ist aber extrem rechenintensiv.
ich hab's mal "klassisch" realisiert an Hand der ANSI-Tabelle (bis andere Vorschläge kommen):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var ChaNr : integer; SelLg : longint; sM : String; for j:=1 to SelLg do begin ChaNr:=ord(sM[j]); if ChaNr>64 then begin if (ChaNr<=90) then inc(ChaNr,32) else if (ChaNr<97) then else if (ChaNr<=122) then dec(ChaNr,32) else if (ChaNr<192) then else if (ChaNr<=222) and not (ChaNr=215) then inc(ChaNr,32) else if (ChaNr<=254) and not (ChaNr=215) and not (ChaNr=247) then dec(ChaNr,32); sM[j]:= chr(ord(ChaNr)); end; end; |
Funktioniert. Allerdings stoße ich nun auf ein neues Problem, da mein Text in einem Richedit steht.
Da jedoch unerwünscht ist Folgefragen zu verknüpfen, stelle ich eine neue Frage ins Netz unter: "markierter Text in Richedit bearbeiten"
Gruß hRb
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!