Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Ansichar和char有什么区别?_Delphi_Variables_Types_Char_Widechar - Fatal编程技术网

Delphi Ansichar和char有什么区别?

Delphi Ansichar和char有什么区别?,delphi,variables,types,char,widechar,Delphi,Variables,Types,Char,Widechar,我最近遇到了这种数据类型不匹配的情况。这是我以前从未见过的。我希望有人能解释这些是什么,它们有什么不同 我得到的错误是F2063。[DCC错误]E2010不兼容类型:“AnsiChar”和“Char”在Delphi中,Char类型实际上是AnsiChar类型的同义词。也就是说,表示ANSI代码页中的字符的单个字节。注意:这是一种简化方法,它忽略了ANSI字符串中可能遇到的多字节字符所引起的复杂情况,但对于这个答案就足够了 这与字符串类型实际上是ANSIString的同义词这一事实相符 在德尔福2

我最近遇到了这种数据类型不匹配的情况。这是我以前从未见过的。我希望有人能解释这些是什么,它们有什么不同


我得到的错误是F2063。[DCC错误]E2010不兼容类型:“AnsiChar”和“Char”

在Delphi中,Char类型实际上是AnsiChar类型的同义词。也就是说,表示ANSI代码页中的字符的单个字节。注意:这是一种简化方法,它忽略了ANSI字符串中可能遇到的多字节字符所引起的复杂情况,但对于这个答案就足够了

这与字符串类型实际上是ANSIString的同义词这一事实相符

在德尔福2009年以后,情况发生了变化

在Delphi 2009中,字符串和字符类型分别成为具有附加功能的WideString和WideChar的同义词,反映了字符串和字符类型向Unicode本机格式的转换。WideChar是一个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和ch变量不再是兼容类型


i、 e.出现此错误的原因是,您有一些代码已使用ANSIChar类型声明,而其他代码正在使用Char类型声明的值。当使用旧版本的Delphi(其中Char=ANSIChar)编译时,这两组代码是兼容的,但在Delphi 2009和更高版本中Char=WideChar,因此这两种类型Char和ANSIChar不兼容。

您是否尝试通过谷歌搜索该错误消息?或者在消息窗口中突出显示错误消息的情况下按F1?或者试着在文档中查找和?几乎相关:太糟糕了,EMBA搞错了基本类型和泛型类型之间的明显区别……每个Delphi开发人员都应该知道这一点,无论他们使用的是什么版本。我不确定将其标记为副本是否正确。关于特定编译器错误的特定问题与更广泛的WideChar和ANSIChar之间的区别是不同的,尽管后者的答案涉及理解前者的答案。我的车为什么不能启动?煤和石油的区别是什么