我最近遇到了这种数据类型不匹配的情况。这是我以前从未见过的。我希望有人能解释它们是什么以及它们有何不同。
我得到的错误是 F2063。 [DCC 错误] E2010 不兼容的类型:“AnsiChar”和“Char”
历史上在德尔斐Chartype 实际上是 the 的同义词ANSIChar类型。即,表示 ANSI 代码页中的字符的单个字节。NOTE: 这是一种简化,忽略了 ANSI 字符串中可能遇到的多字节字符引起的复杂性但足以满足这个答案。
这与以下事实相符:Stringtype 实际上是同义词ANSI字符串.
从 Delphi 2009 开始,这种情况发生了变化。
借助 Delphi 2009,String and Char类型成为同义词Unicode字符串 (a 宽弦具有附加功能)和WideChar,分别反映了向 Unicode 作为字符串和字符类型的本机格式的过渡。 AWideChar是一个 2 字节值,表示 Unicode 的单个字符(或代理项对的一半)。
因此,在 Delphi 2009 之前的 Delphi 版本中,以下两个变量是兼容类型的:
var
ach: ANSIChar;
ch: Char; // Synonymous with ANSIChar
然而,在 Delphi 2009 及更高版本中,“ch”声明的含义发生了变化:
var
ach: ANSIChar;
ch: Char; // Synonymous with WIDEChar
结果,ach and ch变量不再是兼容的类型。
即您收到此错误的原因是您有一些已声明的代码ANSIChar类型和其他使用类型声明值的代码Char。当使用旧版本的 Delphi 编译时,其中字符 = ANSIChar,两套代码是兼容的,但是在Delphi 2009及更高版本中字符 = 宽字符所以这两种类型(Char and ANSIChar) are not兼容的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)