调试一下LowerCase就知道了。
function LowerCase(const S: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;
ShowMessage('圐圙'[4]);
第4个字符是G,调用LowerCase转换后变成g,所以第2个汉字“圙”就变成了“坓”。
解决办法就是2楼所说的,用WideLowerCase和WideUpperCase替换LowerCase和UpperCase。