Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi UpperCase von 'ü' = 'ü' (https://www.delphipraxis.net/66084-uppercase-von-ue-%3D-ue.html)

hsbc 24. Mär 2006 13:27


UpperCase von 'ü' = 'ü'
 
Hallo allerseits,

gibt es einen Trick, wo man auch Umlaute in UpperCase umwandeln kann ?

UpperCase ('ü') ergibt nämlich auch 'ü' und nicht 'Ü'

mfg
Herbert

marabu 24. Mär 2006 13:29

Re: UpperCase von 'ü' = 'ü'
 
Hallo Herbert,

wie gefällt dir SysUtils.AnsiUppercase()?

Grüße vom marabu

R2D2 24. Mär 2006 13:30

Re: UpperCase von 'ü' = 'ü'
 
Programmier dir halt selbst eine kleine Funktion, die je nach Zeichen entweder UpperCase aufruft, oder selbst eingreift.

hsbc 24. Mär 2006 13:39

Re: UpperCase von 'ü' = 'ü'
 
Hallo marabu,

allerbesten Dank, genau das war's.

mfg
Herbert

himitsu 24. Mär 2006 14:09

Re: UpperCase von 'ü' = 'ü'
 
UperCase und LowerCase ändern nur die Buchstaben A-Z und a-z ... Sonderzeichen, wie unseren deutschen Umlaute, werden ignoriert.

Dieses ist daher zu erklären, daß Uper-/LowerCase ncht auf einen bestimten Zeichensatz (wie z.B. ANSI) ausgelegt sind und es demnach diese Zeichen nicht unbedingt gibt.

Außerdem steht folgendes in der OH:
Zitat:

Beschreibung

UpperCase konvertiert den Inhalt von S in Großbuchstaben und gibt einen Zeiger auf den String zurück. Bei der Operation werden nur 7-Bit-ASCII-Zeichen zwischen 'a' und 'z' berücksichtigt. Sollen internationale 8-Bit-Zeichen konvertiert werden, verwenden Sie statt dessen die Funktion AnsiUpperCase.

Und wenn ich mich recht erinnere, dann rufen diese Funktionen auch nur UpperChar/LowerChar auf, welches nur reine BitOperationen sind, welche wiederum etwa so definiert sind :mrgreen:
Delphi-Quellcode:
Function UpperChar(C: Char): Char;
  Begin
    //If (C >= $41) and (C <= $5A) Then Result := C or $20;
    If C in ['A'..'Z'] Then Result := C or $20;
  End;

// Char = Byte

hsbc 24. Mär 2006 14:55

Re: UpperCase von 'ü' = 'ü'
 
Hallo nochmals,

der einseitige Vergleich funktioniert bereits, so wie es marabu geschrieben hat.

Ich habe hier nur noch das Problem, dass ich einen Datenbank-Vergleich (Firebird) machen muss und da gibt es leider Schwierigkeiten, da der SQL-Befehl UPPER leider ebenfalls keine Umlaute konvertieren kann. Bis jetzt finde ich leider keine Lösung.

Beispiel:

In meiner DB ist einmal der Name Müller und ein anderes mal MÜLLER gespeichert. Ich möchte nun mit einer Select-Abfrage alle Müller, egal ob gross oder klein geschrieben selektieren. Aber dies ist ja schon wieder ein Thema für die Datenbank.

mfg
Herbert

himitsu 24. Mär 2006 15:33

Re: UpperCase von 'ü' = 'ü'
 
Eventuell kommst du ja auch besser, wenn du beim Vergleich die Umlaute umwandelst.

z.B.:
Ä und ä in ae
Ö und ö in oe
Ü und ü in ue
ß in ss

BlueStarHH 24. Mär 2006 16:38

Re: UpperCase von 'ü' = 'ü'
 
Zitat:

Zitat von hsbc
In meiner DB ist einmal der Name Müller und ein anderes mal MÜLLER gespeichert. Ich möchte nun mit einer Select-Abfrage alle Müller, egal ob gross oder klein geschrieben selektieren. Aber dies ist ja schon wieder ein Thema für die Datenbank.

Evtl. kann man in der Datenbank global einstellen, ob für Vergleiche die Groß-/Kleinschreibung berücksichtigt werden soll oder nicht.

himitsu 24. Mär 2006 16:59

Re: UpperCase von 'ü' = 'ü'
 
Eigentlich sollte das möglich sein, sogar für Tabellen und "Strings" einzeln.

marabu 24. Mär 2006 17:04

Re: UpperCase von 'ü' = 'ü'
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Herbert,

hier eine kleine Code-Spende - falls doch niemand eine collation table mit der Eigenschaft case insensitive findet.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz