【发布时间】:2013-02-20 13:20:42
【问题描述】:
我经常读到编译器在转换为 PChar 时会产生某种魔力。
PChar 的主要目的是调用库中的外部代码,这些库需要一个以零结尾的字符数组(C 风格的“字符串”)。
PChar 在 Unicode Delphi 上是 PWideChar 的别名,在非 Unicode Delphi 上是 PAnsiChar 的别名。
另一方面,Delphi 字符串(string = AnsiString / UnicodeString,我不是在谈论 WideString,更不用说 ShortString ...)另一方面具有隐藏长度而不是终止字符。它们也被引用计数并在写入时使用复制。
Delphi 字符串是否自动分配并使用隐式 #0 字符保持一个字符长,以便更轻松地转换为 PChar (PAnsiChar / PWideChar) 或者编译器在遇到字符串时会检查和调整字符串吗?转换为PChar?
【问题讨论】:
-
我不怀疑大多数 开发人员使用
PChar及其同类的主要原因是调用外部代码,但这不是他们的字面目的。它们是 Delphi 中定义的各种字符串类型的指针类型。从技术角度来看,仅此而已。 -
@LaKraven
PChar周围的所有魔力使它不仅仅是一个指针。
标签: string delphi pointers casting