

关于加pchar函数避免字符串的连接出错的问题
在字符串后面使用了+加号连接一个字符串,但输出时却没有加号后面那一部分
例:
path2:=path1+'\cjjtpic';
showmessage(path2) //输出时没有后加的\cjjtpic,需要 path2:=PChar(path1)+'\cjjtpic';这样写,因为path1为系统API的返回值
原因:当调用了C/C++或系统动态链接库的函数返回的值要加pchar进行转化
function GetDesktopPath(): string; //获取桌面路径
var
pitem: PITEMIDLIST;
s: string;
begin
shGetSpecialFolderLocation(0, CSIDL_DESKTOP, pitem);
setlength(s, 100);
shGetPathFromIDList(pitem, pchar(s));
result := s;
end;
procedure TMainFr.Button17Click(Sender: TObject);
var
path1,path2:string;
begin
path1:=GetDesktopPath(); //这个GetDesktopPath()函数调用了API,返回值必须加pchar函数转化,否则不能用+和其它字串相连接
//path2:=path1+'\cjjtpic'; //这样写出错,字符串公联接不成功
path2:=PChar(path1)+'\cjjtpic';
if path1 <> '' then
begin
if MyCreateDir(path2) = True then
begin
Memo1.Lines.Add(path2);
Memo1.Lines.Add('创健目录成功,按alt+f5会将屏幕截图并以当前时间命名保存到桌面cjzspic文件中');
end;
end;
end;
pchar函数说明
用以将delphi的string字串转为C风格(以null结尾的字符数组)的字串,或将C风格(Null)的字串转为delphi风格的字串
当需要跟C/C++写的函数,如系统API交换数据时就需要用到pchar函数