惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
U
Unit 42
WordPress大学
WordPress大学
B
Blog
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
D
DataBreaches.Net
G
Google Developers Blog
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家

博客园 - Sephil

[小技巧] 倍数的向上取整和向下取整 WTL汉化版 Delphi 与 VC 共享接口和对象 DelphiXE泛型不能用类类型做为约束的另类解决方案 百度音乐下载工具 (最后更新: 2012-7-20) 为Delphi应用增加脚本支持 插件框架Extensible Framework for Delphi DirectUI for Delphi VC CListCtrl 第一列列宽自适应 WriteFile写磁盘扇区是87错误的原因 批量更改文件名的批处理文件 替代Windows运行功能的工具FastRun BCB/Delphi2007 隐藏任务栏图标 OGA & WGA Crack 所有小工具 迅雷/快车/旋风地址转换器 oracle ora-01033和ora-00600错误 数独游戏 SudokuPuzzle 将文件夹映射为驱动器的工具
关于 API 中返回字串的一些问题
Sephil · 2009-05-24 · via 博客园 - Sephil

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

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的,所以没这个问题

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