![]() |
Inc(Word(Char))
Moin,
geht das bei Unicode?:gruebel:
Delphi-Quellcode:
{$IfDef UniCode}
function LowerCaseEx(const S: string): string; ??? const CharSet: TSysCharSet = ['A'..'Z', 'Ä', 'Ö', 'Ü']; var I: integer; begin Result := S; for I := 1 to Length(Result) do if CharInSet(Result[I], CharSet) then Inc(Word(Result[I]), 32); end; {$Else} function LowerCaseEx(const S: string): string; var I: integer; begin Result := S; for I := 1 to Length(Result) do if Result[I] in ['A'..'Z', 'Ä', 'Ö', 'Ü'] then Inc(Byte(Result[I]), 32); end; {$EndIf} |
AW: Inc(Word(Char))
Delphi-Quellcode:
;) Obwohl die Funktion mit "Ansi" beginnt, funktioniert sie genauso mit Unicode.
function LowerCaseEx(const S: string): string;
begin Result := AnsiLowerCase(S); end; |
AW: Inc(Word(Char))
Wie Detlev schon erwähnte ist
Delphi-Quellcode:
die bevorzugte Methode, da sie sich auf das aktuelle Betriebssystem stützt und auch andere als nur Deutsche Umlaute berücksichtigt.
AnsiLowerCase
Wenn es dir aber nur um das Konstrukt mit dem Inc geht, daß kannst du auch ohne IFDEF erledigen. Der Cast auf Byte oder Word ist gar nicht notwendig:
Delphi-Quellcode:
function LowerCaseEx(const S: string): string;
var I: integer; begin Result := S; for I := 1 to Length(Result) do if Result[I] in ['A'..'Z', 'Ä', 'Ö', 'Ü'] then Inc(Result[I], 32); end; Du bekommst dann zwar eine
Delphi-Quellcode:
Warnung, aber die kommt aktuell auch bei
deprecated
Delphi-Quellcode:
, was intern übrigens (außer bei NEXTGEN) exakt dasselbe tut.
CharInSet
|
AW: Inc(Word(Char))
OK. Thanx. Das mit AnsiLowerCase war mir schon klar. Noch schlimmer find ich den Namen Ansi übrigens bei AnsiSameText ect.. Wollte es auch deshalb mal wissen weil D2007 bei Inc(Word(..)) meldet -> der linken Seite kann nichts zugeweisen werden.
|
AW: Inc(Word(Char))
Dass die Funktionen immer noch AnsiXXX heißen, darüber hat sich himitsu schon gelegentlich aufgeregt. Das hat einfach mit der Abwärtskompatibilität zu tun, damit auch "alter" Code an dieser Stelle nicht geändert werden muss.
|
AW: Inc(Word(Char))
Ja. Fehlt nur noch daß die Ansivariante SameText heißt.:-D Ich verwende meine LowerCaseEx übrigens nur deshalb (gelegentlich in Parsern wo DE als Sprache klar ist) weil sie ca. 2 mal so schnell ist wie AnsiLowerCase. Ansonsten braucht eine LowerCaseEx ja kein Mensch.
|
AW: Inc(Word(Char))
SameText gibt es ja auch schon ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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 by Thomas Breitkreuz