我正在将一个非常旧的(10年以上)应用程序升级到最新的Delphi XE。有一些错误,我不断得到像将Char转换为AnsiChar或WideChar(德尔福)
Incompatible types: 'WideChar' and 'AnsiChar'
我一直只是铸造的炭正确的类型:例如。 AWideChar = WideChar(fncReturnsChar);
这会导致问题吗?
我正在将一个非常旧的(10年以上)应用程序升级到最新的Delphi XE。有一些错误,我不断得到像将Char转换为AnsiChar或WideChar(德尔福)
Incompatible types: 'WideChar' and 'AnsiChar'
我一直只是铸造的炭正确的类型:例如。 AWideChar = WideChar(fncReturnsChar);
这会导致问题吗?
您可能会遇到问题。这里是MarcoCantù在Delphi上的一篇关于Unicode的白皮书。
var
Initials: String[10];
FullName: String;
begin
Initials[1] := FullName[1]; // Error here after Delphi 2009
end;
的问题是,字符串[10]是后来AnsiString类型在Delphi版本的类型。您将在上面的代码中将Unicode字符分配给ANSI字符。
的解决方案是一个简单的类型转换:
Initials[1] := AnsiChar(FullName[1]);
:请参考的Mikael埃里克森的回答所建议的文件。这是至关重要的。
var
C : Char;
AC : AnsiChar;
begin
AC := '1';
// C := AC; Delphi does not know how to convert ANSI to Unicode without a codepage
C := String(AC)[1]; // Any way we can do that by default ANSI decoder
end.
在XE上,你不能得到你报告的错误信息,因为`WideChar`和`Char`是一个一样的。我认为你需要展示更多的代码。 – 2011-02-14 21:07:55
另外,你有没有阅读关于如何切换到Unicode德尔福的各种教程?我特别相信Marco Cantu提供了非常有用的白皮书。 – 2011-02-14 21:10:25