关于 API 中返回字串的一些问题

这几天在写个东西,其中有个函数,有这么几句

Code

}

 

但是调试发现FullPath总是得于PathName,就是说ExtNames[i]没被加上。。。

花了2小时才发现问题。原来PathName是调用ExpandEnvironmentStrings得到的

Code

查MSDN发现,ExpandEnvironmentStrings返回的长度是包括了\0的。。。

所以返回的结果最后有个\0,不管你在后面加什么,编译器都认为字符串到\0就结束了,这就是问题所在

只要这么改下就好了

Result.SetLength(::ExpandEnvironmentStrings(PathName.c_str(), &Result[1], MAX_PATH) - 1);

其他如GetSystemDirectory返回的长度是不变包括\0的,所以没这个问题

把这个记下来,免得到时候自己忘了



看清这世界的美丽与残酷



NAILY Soft
Sephil on CNBlogs

 

标签: Delphi
posted @ 2009-05-24 19:18 Sephil 阅读(110) 评论(0) 编辑 收藏