{$STRINGCHECKS OFF} // grrr... Wir wollen diesen Unsinn nicht, der den Code
Das existiert bei mit gar nicht:
-> [DCC Fehler] mlUtils.pas(6165): E1030 Ungültige Compileranweisung: 'STRINGCHECKS'
Hier aber nochmal die Deutsche Version (ö,ä,ü) + LowerCase:
Delphi-Quellcode:
procedure UpCaseFst(
var S:
string);
overload;
var
P: PChar;
Len: Integer;
begin
{ Garantieren, dass keine andere String-Referenz auf unseren Speicher zeigt (Copy-on-Write) }
UniqueString(S);
Len := Length(S);
// nur aufbläht, verlangsamt und für Delphi und gescheite
P := PChar(S);
for Len := Len
downto 1
do
begin
case P^
of // Delphi 2009 Workaround für "in ['a'..'z']" Warnung, gleicher Maschinencode
'
a'..'
z':
P^ := Char(Ord(P^)
xor $20);
// Die Eigenschaften der ASCII-Tabelle ausnutzen
'
ö': P^ := '
Ö';
'
ä': P^ := '
Ä';
'
ü': P^ := '
Ü';
end;
Inc(P);
end;
end;
Delphi-Quellcode:
procedure LwCaseFst(
var S:
string);
overload;
var
P: PChar;
Len: Integer;
begin
{ Garantieren, dass keine andere String-Referenz auf unseren Speicher zeigt (Copy-on-Write) }
UniqueString(S);
Len := Length(S);
// nur aufbläht, verlangsamt und für Delphi und gescheite
P := PChar(S);
for Len := Len
downto 1
do
begin
case P^
of // Delphi 2009 Workaround für "in ['a'..'z']" Warnung, gleicher Maschinencode
'
A'..'
Z': P^ := Char(Ord(P^)
or $20);
// Die Eigenschaften der ASCII-Tabelle ausnutzen
'
Ö': P^ := '
ö';
'
Ä': P^ := '
ä';
'
Ü': P^ := '
ü';
end;
Inc(P);
end;
end;
Ob das jetzt immernoch die Highendoptimierung ist, weiß ich nicht.