PAnsiChar和PChar之间有什么区别吗? (在Delphi 2007年之前)
提前谢谢!
答案 0 :(得分:16)
在D2009及以后:是的,有。 PChar
是指向Char
的指针,WideChar
是一个unicode字符(PAnsiChar
)。 AnsiChar
是指向PChar
的指针,顾名思义就是ANSI字符。
编辑:对于2009年之前版本的Delphi PAnsiChar
和{{1}}完全相同。他们都指向(安西)角色。
答案 1 :(得分:3)
我在你的问题中注意到“在2007年的Delphi中”,我的意思是“在Delphi 2007及更早版本中”,所以......
在 Delphi 2007 中,之前的 PChar 和 PANSIChar 是同义词。它们的含义相同 - 指向 ANSIChar 值的指针。 Char 与这些版本中的 ANSIChar 同义。
但是,在 Delphi 2009 及之后, Char 成为 WideChar 的同义词,因此 PChar 成为同义词的 PWideChar 强>
注意,WideChar NOT 是一个Unicode字符 - Unicode并不是那么简单。任何一个 WideChar 值可以是BMP(基本多语言平面)中的代码点,也可以是代理对中的一个。它也可能是一个变音符号 - 例如,应用于WideString中前一个代码点的“重音”。
Unicode中“字符”的概念不容易映射到任何类型的单个值。
答案 2 :(得分:1)
PChar是指向“char”的指针,无论发生什么。在D2009及更高版本中,Char表示UnicodeChar。在此之前,Char是一名AnsiChar。
不同之处在于,如果你使用D2007并迁移到更高版本,PChar的定义将会改变,而PAnsiChar的定义则不会。
答案 3 :(得分:0)
PAnsiChar指向非unicode char(旧字符串类型),而PChar指向新样式unicode char。
答案 4 :(得分:0)
Delphi 2009字符类型是Char,AnsiChar和WideChar,其中Char默认为WideChar。在以前版本的Delphi中,Char将等同于AnsiChar。 P表示指向给定类型的指针。