![]() |
Herausfinden, ob Char ein Großbuchstabe ist.
Wie kann ich herausbekommen, ob ein Buchstabe ein Großbuchstabe ist?
Gibt es eine vorgefertigte Methode? (z.B. isUppercase o.ä.) |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Delphi-Quellcode:
;)
function IsUpperCase(c: Char): Boolean;
begin Result := c = UpperCase(c); end; |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Hallo,
ich kenne keine vorgefertigte Methode, aber müsste nicht
Delphi-Quellcode:
funktionieren?
If (Char in ['A'..'Z'])
Gruß, ManuMF |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
@ Manu: Müsste so funktionieren ;) Aber Generals-Methode klingt "sinnvoller", oder wenigstens, ist sie leichter vertändlich ;)
Danke ^^ == beantwortet == |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Moin Fabian,
wenn sichergestellt ist, dass es sich um ein ASCII-7 Zeichen im Bereich A bis Z bzw. a - z handelt, dass man prüfen will ginge das so:
Delphi-Quellcode:
Gross- und Kleinbuchstaben unterscheiden sich nur durch ein gesetztes (klein) oder eben nicht gesetztes (gross) 5. Bit
function IsUpper(const AcValue : Char) : boolean;
begin Result := (ord(AcValue) and $20) = 0; end; |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Ihr dürft nicht vergessen, dass Umlaute (äöü) nicht mit UpperCase umgewandelt werden.
Das muss selbst ausprogrammiert werden... Gruß, |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Oh stimmt.. Dann ist da Christians Lösung besser.. wenn auch schwerer zu verstehn..
|
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Zitat:
![]() |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Moin Neutral General,
nein, denn meine Methode funktioniert auch nur von 'A'..'Z'. Mit Umlauten geht das nicht. In Abwandlung Deiner Methode:
Delphi-Quellcode:
oder derer von ManuMF:
function IsUpperCase(c: Char): Boolean;
begin Result := c = AnsiUpperCase(c); end;
Delphi-Quellcode:
function IsUpperCase(c: Char): Boolean;
begin Result := Char in ['A'..'Z','Ä','Ö','Ü']; end; |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Mh dann nehm ich das zurück und poste meine verbesserte Version :)
Delphi-Quellcode:
EDIT: Zu langsam :|
function IsUpperCase(c: Char): Boolean;
begin Result := c = AnsiUpperCase(c); end; |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Das mit dem AnsiUppercase geht nicht. Es gibt da nämlich einen Buchstaben, von dem es keine Uppercase-Variante gibt: das "ß" :wink:
|
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Hallo,
habt ihr euch eigentlich mal überlegt, was bei eurer UpperCase-Lösung im Hintergrund alles abläuft? Hier eine kleine Zusammenstellung:
Code:
Die Lösung von ManuMF kommt im Vergleich dazu mit ein paar Subtraktionen aus.
- StackFrame einrichten
- unsichtbares TRY..FINALLY initialisieren - Char in String umwandeln - AnsiUpperCase aufrufen - LStrLen - LStrToPChar - LStrFromPCharLen - CharToUpperBuff - LStrCmp - String freigeben - TRY..FINALLY aufräumen - StackFrame auflösen Der ganze Aufwand ist aber nicht notwendig: Windows bietet eine Funktion mit Namen IsCharUpper an... Gruß Hawkeye |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
IsCharUpper funktioniert auch nicht richtig (jedenfalls wenn man mit Unicode arbeited) ... bei Ansi läuft es auch nur im unteren 7-Bit-Bereich korrekt.
PS: IsCharUpper macht es intern über 'ne CASE, es sei denn die haben inzwischen auch auf eine "optimiertere" IF-Abfrage reduziert, aber so, oder so, es is allemal schneller als die AnsiUpperCase-Methode ^^ |
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Und die entsprechende Unicodeversion dazu? IsCharUpperW
|
Re: Herausfinden, ob Char ein Großbuchstabe ist.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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