引文
前些日子做了个语言国际化,用到INI文件,这里对Windows下INI文件操作的API做个学习总结,转载请保证文章完整及保留博客链接.
改定履历
一 键值的创建与删除
利用该函数可以往指定的INI文件中写入键值
同时也可以利用该API删除键、及小节
●删除KEY,只要lpString值为空
●删除SECTION,只要lpKeyName及lpString都为空即可
★不能在lpString中包含回车换行符
================================
二 获取键值
有两个
→API有两种用法:
①当lpAppName指定为NULL的时候,函数在缓冲区中返回的是全部小节名称的列表
②当lpAppName指定了小节名称,而lpKeyNname指定为NULL的时候,缓冲区返回的是该小节全部键名的列表
↑所以,用这两种方法调用GetPrivateProfileString函数可以实现枚举小节名称及枚举键名的功能
2. 如果键值是全部是由数字字符组成的话可以用GetPrivateProfileInt方法
注意:
●方法不支持负数,即:如果键值是“-1243”格式的字符串,该API返回0;
●nDefault指定一个默认数值,如果指定键名不存在的话,函数返回nDefault指定的数值;
=====================================
三 小节管理
①枚举小节
前面讲到用GetPrivateProfileString可以枚举小节和键名,这里讲一个专门用来实现此功能的函数
该方法返回指定INI文件的所有小节节名
②枚举键名
该方法返回指定文件指定小节的所有键定义列表-》
返回数据格式为:键名1=键值1,0,键名2=键值2,0,.....键名n=键值n,0,0
所以这个方法可以同时完成枚举键名与键值的功能。
③写入全部的小节数据
msdn:the WritePrivateProfileSection function replaces the keys and the values for the specified section in an Initialization file.
该方法将“键名1=键值1,0,键名2=键值2,0,.....键名n=键值n,0,0”格式的小节数据一次性全部写入。
另外:
●创建INI文件时,如果lpFileName指定的文件名不包括路径时,那么系统会默认创建在WINDOWS安装目录下
相对保险的方法是用GetCurrentDirectroy获取当前目录,最保险的方法是用GetModuleFileName获取当前执行文件修路名的全路径,再分离路径加上INI文件名
●如果需要操作win.ini而不是其它INI文件时,有一组专用于操作win.ini的API可用