我正在将一个非常古老的(10年以上)应用程序升级到最新的Delphi XE。我一直有很多错误
Incompatible types: 'WideChar' and 'AnsiChar'
我只是将char转换为正确的类型:ex。 AWideChar = WideChar(fncReturnsChar);
这会导致问题吗?
答案 0 :(得分:6)
可能存在问题。以下是MarcoCantù撰写的Delphi中关于Unicode的白皮书。
答案 1 :(得分:2)
var
Initials: String[10];
FullName: String;
begin
Initials[1] := FullName[1]; // Error here after Delphi 2009
end;
问题是String [10]是后来的Delphi版本中AnsiString的类型。您将在上面的代码中为ANSI字符分配Unicode字符。
解决方案是一个简单的类型转换:
Initials[1] := AnsiChar(FullName[1]);
请参阅Mikael Eriksson答案中推荐的文件。这很重要。
答案 2 :(得分:2)
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.