Und hier die komplexe, aber immer noch schnelle Lösung, welche auch Umlaute und regionale Spracheinstellungen berücksichtigt
Delphi-Quellcode:
function SwapCase(const InStr: AnsiString): AnsiString;
var
US, LS: AnsiString;
I: Integer;
begin
SetLength(Result, Length(InStr));
US := AnsiUpperCase(InStr);
LS := AnsiLowerCase(InStr);
for I := 1 to Length(InStr) do
begin
if US[I] = InStr[I] then
Result[I] := LS[I]
else
Result[I] := US[I];
end;
end;
...

...