请问如何才能将PCHAR类型的值转换为STRING类型的值

niat97222 2002-09-23 08:03:14
我用getsystempath函数,取回来的值是PCHAR类型的,可是不知道该怎么样才能将它转换为STRING类型来给我用,
...全文
33 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
niat97222 2002-09-24
  • 打赏
  • 举报
回复
我最后的问题还是没有人回答,看来只有这样了
niat97222 2002-09-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
p:PChar;
s:String;
begin
GetSystemDirectory(p,12);
s:=Strpas(p);
caption := s;
end;


这样有错误吗??
可是我这样还是查不到SYSTEM目录阿,得到的结果是"S嬝嬅??"
能帮我看看吗
dejoy 2002-09-23
  • 打赏
  • 举报
回复
出现了乱码是因为string是单字节的,要支持双字节如汉字要用widestring
niat97222 2002-09-23
  • 打赏
  • 举报
回复
谢谢各位,强制类型转换确实很不安全,因为我就是使用强制类型转换出现了乱码才问的这个问题。
刚才试了一下,好象还是用StrPas比较好
ssq_td 2002-09-23
  • 打赏
  • 举报
回复

直接pchar()就可以了!系统会强制转换的!!
del_c_sharp 2002-09-23
  • 打赏
  • 举报
回复
好重复
del_c_sharp 2002-09-23
  • 打赏
  • 举报
回复
好热闹
lth_81 2002-09-23
  • 打赏
  • 举报
回复
以前我回答过这个问题,首先我觉得用string()强制转换是很不安全的,我碰到过转换后是乱码的现象。
建议:
function StrPas(const Str: PChar): string;
我想应该能够了解了吧。
另外一个函数也许会用得着:
function StrPCopy(Dest: PChar; const Source: string): PChar;
我想也应该看懂了。
lf43 2002-09-23
  • 打赏
  • 举报
回复
string(pc)强制转换
hunter_zxy 2002-09-23
  • 打赏
  • 举报
回复
对,我错了,string(0的确可以强制转换
dejoy 2002-09-23
  • 打赏
  • 举报
回复
用string(pc)强制转换,string支持pchar类型,可以安全转换.
yxg20803 2002-09-23
  • 打赏
  • 举报
回复
up
hunter_zxy 2002-09-23
  • 打赏
  • 举报
回复
应该使用strpas用string()是不行的
shao528 2002-09-23
  • 打赏
  • 举报
回复
不好意思写错了,更正:
var s:string;
pc :PChar;
....
s := string(pc);
daniel007 2002-09-23
  • 打赏
  • 举报
回复
b := format('%s', [tmp]);也可以使用下面的函数。
StrPas:将Pchar转换为string。
ilang 2002-09-23
  • 打赏
  • 举报
回复
string()
shao528 2002-09-23
  • 打赏
  • 举报
回复
var s:string;
pc :PChar;
....
s := PChar(pc);

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧