Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Herausfinden, ob Char ein Großbuchstabe ist. (https://www.delphipraxis.net/72042-herausfinden-ob-char-ein-grossbuchstabe-ist.html)

Gausi 24. Jun 2006 13:27

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:

Hawkeye219 24. Jun 2006 14:04

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:
- 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
Die Lösung von ManuMF kommt im Vergleich dazu mit ein paar Subtraktionen aus.

Der ganze Aufwand ist aber nicht notwendig: Windows bietet eine Funktion mit Namen IsCharUpper an...

Gruß Hawkeye

himitsu 26. Jun 2006 11:07

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 ^^

Ydobon 26. Jun 2006 16:32

Re: Herausfinden, ob Char ein Großbuchstabe ist.
 
Und die entsprechende Unicodeversion dazu? IsCharUpperW

himitsu 27. Jun 2006 12:02

Re: Herausfinden, ob Char ein Großbuchstabe ist.
 
Zitat:

Zitat von Ydobon
Und die entsprechende Unicodeversion dazu? IsCharUpperW

Nene, is schon klar, allerdings hat die einige Fehler in ihrer Implementation ... einige Zeichenbereiche werden garnicht, oder falsch umgewandelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Seite 2 von 2     12   

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