【发布时间】:2011-04-24 07:31:38
【问题描述】:
如何将PAnsiChar 变量转换为WideString 或string?
【问题讨论】:
如何将PAnsiChar 变量转换为WideString 或string?
【问题讨论】:
您只需将一个变量分配给另一个变量,然后让 Delphi 编译器为您完成所有转换:
var
p: PAnsiChar;
s: string;
w: WideString;
....
s := p;
w := p;
如果您想在另一个方向进行转换,并将讨论限制在 Delphi 7 中,其中 Char、PChar、字符串都是 ANSI 数据类型,您可以使用以下内容:
PAnsiChar(s);
PAnsiChar(AnsiString(w));
在这个方向上进行转换时需要强制转换,对于 WideString,在请求以空字符结尾的 C 字符串指针之前,必须将数据显式从 Unicode 转换为 ANSI。
【讨论】:
W1057 Implicit string cast from 'AnsiChar' to 'string' 和W1057 Implicit string cast from 'AnsiChar' to 'WideString'。
implicit cast 警告。它们还可以帮助编译器确定您实际想要执行的转换。正如我所说,AnsiString 在 D2009+ 中支持代码页,因此显式转换也有助于编译器决定使用哪些代码页,因为现在可以在代码中定义具有静态代码页关联性的 AnsiString 类型别名。
var
s: AnsiString;
w: WideString;
p: PAnsiChar;
...
s := p;
w := WideString(s);
【讨论】:
s:PAnsiChar;
WideString(AnsiString(s));
或者在你可能想要的 unicode Delphi 上:
String(AnsiString(s));
【讨论】:
在文档中查找 StrPas 函数。
【讨论】: