PAnsiChar和PChar之间的区别

时间:2009-11-26 12:33:06

标签: delphi types

PAnsiChar和PChar之间有什么区别吗? (在Delphi 2007年之前)

提前谢谢!

5 个答案:

答案 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表示指向给定类型的指针。