繁体   English   中英

将Char转换为AnsiChar或WideChar(Delphi)

[英]Convert Char into AnsiChar or WideChar (Delphi)

我正在将一个非常古老的(10年以上)应用程序升级到最新的Delphi XE。 我一直有很多错误

Incompatible types: 'WideChar' and 'AnsiChar'

我只是将char转换为正确的类型:ex。 AWideChar = WideChar(fncReturnsChar);

这会导致问题吗?

那里可能有问题。 以下是MarcoCantù撰写的Delphi中关于Unicode的白皮书。

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

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答案中推荐的文件。 这很重要。

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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM