2

非常に古い (10 年以上) アプリケーションを最新の Delphi XE にアップグレードしています。私が好きになり続ける多くのエラーがあります

Incompatible types: 'WideChar' and 'AnsiChar'

私はちょうどcharを正しいタイプにキャストしています:ex. AWideChar = WideChar(fncReturnsChar);

これは問題を引き起こしますか?

4

3 に答える 3

6

そこに問題があるかもしれません。これは、MarcoCantùによるDelphiのUnicodeに関するホワイトペーパーです。

http://edn.embarcadero.com/article/38980

于 2011-02-14T21:12:57.223 に答える
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.
于 2013-10-10T06:12:01.497 に答える
2
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 の回答で推奨されているドキュメントを参照してください。それは不可欠です。

于 2012-07-18T10:21:18.643 に答える