我了解在Delphi中,空字符串(AnsiString或WideString)可以由nil指针或指向实际空字符串的指针表示。

通过实验,我已经在Delphi XE2(具有特定的编译器设置)中显示了PChar('') <> nil。但这是否可以保证,或者它可能在将来的版本中更改,还是取决于某些编译器设置?

我有信心危机。如果有人能给我一个明确的答案,我将不胜感激。

最佳答案

是的。从字符串文字类型转换为PChar的类型转换永远不会是空指针。从相同字符类型的字符串到PChar的类型转换也不为空。 (将字符串转换为PChar,将AnsiString转换为PAnsiChar,等等。)

但是,将其他事物的类型转换强制转换为PChar可能为null。 (指向PChar的指针,指向PWideChar的AnsiString等)

该文档在“字符串类型”主题的Mixing Delphi Strings and Null-Terminated Strings部分中对此进行了介绍:

关于delphi - 是否保证PChar ('')是指向#0的指针(而不是nil)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14836247/

10-12 19:46