我有一个奇怪的问题。
我正在使用Delphi 2007,并使用-r
开关运行它。在我的计算机上,一切正常。将代码传输到另一台计算机时,出现错误:
不兼容的类型char和widechar。
也许我应该改变一些选择。
导致问题的函数:
function THcp.ConVertString(s: string): string;
Var i:integer;
lstr:string;
begin
lstr:=EmptyStr;
for i := 1 to Length(s) do
begin
case s[i] of
'Č': s[i]:='C';
'č': s[i]:='c';
'Ć': s[i]:='C';
'ć': s[i]:='c';
'Š': s[i]:='S';
'š': s[i]:='s';
'Đ': s[i]:='D';
'đ': s[i]:='d';
'Ž': s[i]:='Z';
'ž': s[i]:='z';
end;
lstr:=lstr+s[i];
end;
Result:=lstr;
end;
最佳答案
这是我的假设。在编译代码的计算机上,代码中的非ASCII字符都是该计算机语言环境的所有有效ANSI字符。但是另一台机器使用不同的语言环境,在这些语言环境下,其中一些字符未包含在代码页的> = 128部分中。因此,这些字符被提升为WideChar
,因此当然与AnsiChar
不兼容。