![]() |
Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Hallo Gemeinde,
suche schon eine Weile nach einer Möglichkeit, große von kleinen Buchstaben, sowie Sonderzeichen von Ziffern zu unterscheiden. Dies sollte unabhängig vom verwendeten ANSI-Characterset funktionieren. Hat jemand eine Idee? Gruß Michael |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Die Buchstaben und Ziffern sollten bei allen Charsets gleich sein.
Und was verstehst du unter "unterscheiden"? Wie man einen Unterschied zwischen Groß- und Kleinbuchstaben feststellt? Wie machst du es als Mensch? Genau so sollte man es dann auch umsetzen. |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Schau Dir 'mal die Funktion Ord und eine ASCII-Tabelle an.
Das Alphabeth beginnt bei Gr0ßbuchstabe A = Ord(65) [Edit] Herzlich willkommen in der DP[Edit] :dp: Gruß Wolfgang |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
In Delphi gibt es eine sehr praktische Sache: Sets.
Delphi-Quellcode:
In diesem Fall wäre allerdings das Case-Konstrukt noch eleganter:
var
character: char; begin character := 'P'; // Irgendein Zeichen if character in ['a'..'z'] then ShowMessage('Kleinbuchstabe') else if character in ['A'..'Z'] then ShowMessage('Großbuchstabe') else if character in ['0'..'9'] then ShowMessage('Zahl') else ShowMessage('Sonderzeichen') end;
Delphi-Quellcode:
var
character: char; begin character := 'P'; // Irgendein Zeichen case character of 'a'..'z': ShowMessage('Kleinbuchstabe'); 'A'..'Z': ShowMessage('Großbuchstabe'); '0'..'9': ShowMessage('Zahl'); else ShowMessage('Sonderzeichen'); end; end; |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
wenn es sich nur um die Buchstaben, wie A-Z und ÄÖÜ handelt, dann geht auch dieses
Delphi-Quellcode:
ob es jetzt auch bei allen Sonderzeichen ala Á und Co. auch geht, kann ich allerdings nicht sagen, aber bei den normalen Buchstaben ist es immer so :angel:
if Ord(Key) and $20 <> 0 then IstEinKleinbuchstabe;
[edit] ansonsten
Delphi-Quellcode:
if AnsiUpperCase(Key)[1] = Key then IstEinGroßbuchstabe;
|
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Vielen Dank für eure schnelle Hilfe. Was die deutsche Sprache angeht, mögen die Lösungsvorschläge alle brauchbar sein, jedoch was ist, wenn ich auch bspw. den Kyrillischen, Grichischen oder sonstigen Zeichensatz unterstützen möchte. Bleibt mir nichts Anderes, als den aktuellen Characterset zu ermitteln um dann mit den Richtigen Sets zu arbeiten?
Um so länger ich drüber nachdenke, desto sicherer bin ich mir, dass es da kein "Allheilmittel" gibt. Wenn's noch andere Ideen gibt, sind sie herzlich willkommen hier aufgeschrieben zu werden. Nochmals herzlichen Dank an alle Helfer. Michael |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Ziffern sind überall gleich. Die Buchstaben kannst du eventuell mit AnsiLowerCase und AnsiUppercase bedingt heraus finden (das ß im deutschen zum Beispiel nicht)
|
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Genau, ß und andere Ausreißer machen da einen Sonderfall drauß. Ausserem gibt es in andern Codesets auch Unterschiede in der Anzahl der Buchstaben des jeweiligen Alphabets.
Danke für den Tip Michael |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Die Anzahl der Buchstaben ist egal, lediglich Buchstaben die sich nicht in Groß-/Kleinschreibung unterscheiden bilden eine Außnahme. Ansonsten kann man ermitteln ob es sich um einen Buchstaben handelt in dem man prüft ob AnsiUpperCase und AnsiLowerCase verschiedene Ergebnisse liefern
|
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Danach müsste ja die Lösung des Problems in den Units dieser und ähnlicher Funktionen liegen. Wo sind diese Sets oder was auch immer denn definiert? Kann man das irgwendwie rausfinden, oder liegen die in Delphi nicht als Quellcode vor?
Gruß Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 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