将字符串转换为Delphi 2009中的PAnsiChar

前端之家收集整理的这篇文章主要介绍了将字符串转换为Delphi 2009中的PAnsiChar前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将我的应用程序转换为Delphi 2009,并且需要将一个字符串(宽)转换为AnsiString的一些调用面临一个有趣的问题。

以下是一个示例来说明我遇到的问题:

var
  s: PAnsiChar;

...

s := PAnsiChar(Application.ExeName);

使用Delphi 2007和以前的版本,s:= PChar(Application.ExeName)将返回应用程序exe路径。

使用Delphi 2009,s:= PAnsiChar(Application.ExeName)只返回’E’。

我的猜测是因为我将unicode字符串转换为ansi字符串,但是如何转换它,以便PAnsiChar获取完整的字符串?

解决方法

我在这里没有德尔福2009,所以我不能检查。但也许你必须尝试:
s := PAnsiChar(AnsiString(Application.ExeName));

正如gabr已经指出的那样,这不是一个很好的做法,只有当你100%确定时才使用它,字符串只包含与ansi范围直接映射的字符。

这就是为什么你应该得到一个警告,因为你将Unicode转换为Ansi。

猜你在找的Delphi相关文章