非常に古い (10 年以上) アプリケーションを最新の Delphi XE にアップグレードしています。私が好きになり続ける多くのエラーがあります
Incompatible types: 'WideChar' and 'AnsiChar'
私はちょうどcharを正しいタイプにキャストしています:ex. AWideChar = WideChar(fncReturnsChar);
これは問題を引き起こしますか?
そこに問題があるかもしれません。これは、MarcoCantùによるDelphiのUnicodeに関するホワイトペーパーです。
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.
var
Initials: String[10];
FullName: String;
begin
Initials[1] := FullName[1]; // Error here after Delphi 2009
end;
問題は、String[10] が後の Delphi バージョンの AnsiString の型であることです。上記のコードでは、Unicode 文字を ANSI 文字に割り当てます。
解決策は、単純な型キャストです。
Initials[1] := AnsiChar(FullName[1]);
Mikael Eriksson の回答で推奨されているドキュメントを参照してください。それは不可欠です。