码迷,mamicode.com
首页 > 其他好文 > 详细

从一段代码谈GetPrivateProfileString的深坑

时间:2018-03-30 13:20:31      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:WinAPI ini读取

**总结:GetPrivateProfileString注意文件是否存在,

文件不存在或不具有r读权限会在运行时报内存错误。**

失败源代码如下:

string programDir = GetOcxPath(file);//得到ini配置文件路径

ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini");

这段代码看起来没任何问题,在MFC ocx工程下编译链接都ok,但运行一直内存错误。

一直以为是ocx注册没有替换,或者是GetOcxPath存在内存错误,将GetOcxPath单元测试和断点调试没有任何问题。

最后增加了文件存在判断,不存在就读取默认文件就OK了。

改进后源代码如下:

    string programDir = GetOcxPath(file);//得到ini配置文件路径
    DWORD ret;
    FILE* fp = fopen(programDir.data(),"r");
    if(!fp){
        ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini");
    }else{
        ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,programDir.data());
    }

从一段代码谈GetPrivateProfileString的深坑

标签:WinAPI ini读取

原文地址:http://blog.51cto.com/whish/2092885

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!