战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

很久没有用WindowsAPI来读取INI,在公司写服务器逻辑需要用到,拿来试了下。

记得很早以前就用过GetPrivateProfile*系的INI读取函数,有一个问题很烦:ini的文件路径必须是绝对路径,否则即便工作路径是设置正确的,也是无法读取到ini文件。以前有查过,说是内部搜索路径的问题。默认是在system32去找。4,5年前的处理方法就是把绝对路径拿过来和当前路径组合后传给GetPrivateProfile*系API。

之后,我自己一直是用自己封装的文本解析类来读取ini,很久没碰这个API,也就没有路径烦恼

今天再次碰到,故询问了下其他人有没有什么好的方法:

只需要将路径改为当前路径标识即可,即:

setting.ini   -->     ./setting.ini

 

再次诅咒这个恶心的API

posted on 2010-09-02 10:11 战魂小筑 阅读(4786) 评论(6)  编辑 收藏 引用 所属分类: 操作系统

评论

# re: 恶心的GetPrivateProfileString 2010-09-02 12:45 陈梓瀚(vczh)
"."也是绝对路径哈,你可以理解为快捷方式什么的……其实是windows自己定义的,而不是GetPrivateProfileString定义的。因此你得把标题改成“恶心的Windows”。  回复  更多评论
  

# re: 恶心的GetPrivateProfileString 2010-09-02 13:09 路青飞
哈哈,得改成“恶心的Windows”。  回复  更多评论
  

# re: 恶心的GetPrivateProfileString 2010-09-02 14:27 tiq
MSDN 说的是「this parameter does not contain a *FULL PATH* to the file」的情况下从系统目录中查找,指的是需要完整路径,和绝对路径、相对路径一点关系都没有。

「settings.ini」是文件名,路径都称不上,更不用说完整路径。
「e:/settings.ini」是绝对路径,也是完整路径。
「./settings.ini」虽然是相对路径,但是是完整路径(「.」表示当前工作目录路径)。  回复  更多评论
  

# re: 恶心的GetPrivateProfileString 2010-09-02 23:26 chaogu
. 和 ..都不是Windows才用的。
. 表示当前路径
.. 表示上级路径
. 和 .. 是相对路径(相对于当前工作路径)。
要表示上级的上级路径用 ../../
  回复  更多评论
  

# re: 恶心的GetPrivateProfileString 2010-09-03 14:58 陈梓瀚(vczh)
@chaogu
恶心的Windows和Linux……  回复  更多评论
  

# re: 恶心的GetPrivateProfileString 2010-09-17 20:30 侠客西风
我感觉这个api最好还是不要用,
好像它是没读取一次都是要打开一次文件分析一遍的.

连续读两次值就是打开 解析 关闭 打开 解析 关闭...
感觉很不好  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理