将 Char 转换为 AnsiChar 或 WideChar (Delphi)

发布于 2024-10-17 21:48:29 字数 217 浏览 9 评论 0原文

我正在将一个非常旧的(10 多年)应用程序升级到最新的 Delphi XE。我不断收到许多错误,就像

Incompatible types: 'WideChar' and 'AnsiChar'

我刚刚将 char 转换为正确的类型一样:例如。 AWideChar = WideChar(fncReturnsChar);

这会引起问题吗?

I'm upgrading a very old (10+ years) application to the latest Delphi XE. There are a number of errors I keep getting like

Incompatible types: 'WideChar' and 'AnsiChar'

I have been just casting the char to the right type: ex. AWideChar = WideChar(fncReturnsChar);

Is this going to cause problems?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

舞袖。长 2024-10-24 21:48:29

那里可能会给你带来一些问题。这是 Marco Cantù 撰写的关于 Delphi 中的 Unicode 的白皮书。

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

There might be problems in there for you. Here is a white paper on Unicode in Delphi by Marco Cantù.

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

转身泪倾城 2024-10-24 21:48:29
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 的回答中推荐的文档。这是至关重要的。

var
    Initials: String[10];
    FullName: String;

begin

    Initials[1] := FullName[1]; // Error here after Delphi 2009

end;

The problem is that String[10] is the type of AnsiString in later Delphi versions. You are going to assign a Unicode character to an ANSI character in the above code.

The solution is a simple type cast:

Initials[1] := AnsiChar(FullName[1]);

Please refer the document recommended in Mikael Eriksson's answer. That is essential.

别靠近我心 2024-10-24 21:48:29
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
  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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文