String[...] ist ein
ShortString und hat absolut nichts mit dem
String (
AnsiString,
WideString oder
UnicodeString) zu tun.
Ein ShortString ist nunmal nur
ANSI und daran hat sich selbst in D2009+ nicht geändert.
PS: Einen String zu nehmen, wo doch eh nur ein Char benötigt wurde, war eh nicht das Wahre.
Delphi-Quellcode:
procedure TCustomxyz.FToggleStrCase(var S : String);
var
i : Integer;
a, b : String;
begin
for i := 1 to Length(S) do
begin
b := S[i];
a := AnsiUpperCase(S[i])[1];
if a = b then
S[i] := AnsiLowerCase(b)[1]
else
S[i] := a;
end;
end;
wobei es so wesentlich optimaler arbeiten würde
Delphi-Quellcode:
procedure TCustomxyz.FToggleStrCase(var S : String);
var
i : Integer;
U, L : Char;
begin
U := AnsiUpperCase(S);
L := AnsiLowerCase(S);
for i := 1 to Length(S) do
if S[i] = U[i] then
S[i] := L[i]
else
S[i] := U[i];
end;