我有一个奇怪的问题。

我正在使用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不兼容。

10-05 22:26