![]() |
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 |
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Diese Funktionen (die beiden genannten) sollten nicht in Delphi implementiert sein sondern in Windows.
|
Re: Wie unterscheidet man Groß- von Kleinbuchstaben und...?
Liste der Anhänge anzeigen (Anzahl: 1)
Theoretisch dürfte man auch Windows irgendwie fragen können was welches Zeichen zumindesten darstellt (Buchstabe, Zahl, Symbol usw.), allerdings weiß ich grad nichtmehr wie das ging.
In den JEDIs dürften aber auch entsprechende Funktionen vorhanden sein (hab glaub ich mal welche gesehn) Ansonsten kann man sich die entsprechenden Informationen auch auf ![]() Ich hab hier zwar noch ein uraltes Projekt, welches die Infos in 'ner art kleinen ASM-DB enthält, aber diese Daten sind niemals aktuell (und inzwischen auch schon ein paar Jahre alt ... es werden ja ständig neue Zeichen dem Unicode-Standard hinzugefügt) Ich glaub auch nicht, daß jemandem wirklich soetwas helfen kann (das wäre z.B. die Funktion UnicodeCharInfo aus'm Anhang ... die darin enthaltenen Daten stammten damals direkt von unicode.org) Wenn ich demnächst etwas Zeit hab, dann könnte ich mal nachsehn, ob mir die entsprechenden APIs wieder einfallen, falls nicht jemand anderes schneller ist :angel2: PS: die Windowsanwendung Charmap.exe greift auf diese APIs zu und ließt auch einige entsprechende Daten von windows aus (falls noch keinem die Bezeichnungen in der Statusleiste aufgefallen sind) PS: den einfachen Groß-/Kleinbuchstabenvergleich hatte ich weiter oben ja schon gepostet ... dieser Funktioniert immer, wenn auch etwas langsam (die schnelle Variante ist in meinem himXML und inzwischen auch in der ![]() [add] z.B.: ![]() ![]() ![]() ![]() ![]() ![]() ![]() [info] warum ich es damals selber implementieren wollte, war da Windows nur die Infos der installierten Gebietschemata/Sprachen enthält, aber ich alles haben wollte. seit Windows Vista wird aber standardmäßig alles installiert[/info] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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