文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>简述配置文件ini及其操作函数GetPrivateProfileS..

简述配置文件ini及其操作函数GetPrivateProfileS..

时间:2010-07-27  来源:lingdxuyan

1、概述

ini是微软Windows操作系统中的文件扩展名。这些字母表示初始化。正如该术语所表示的,ini文件被用来对操作系统或特定程序初始化或进行参数设置。

在编写程序时,我们可以使用ini 文件(Profile)来保存少量数据,比如本次程序执行时窗口的位置、大小、一些用户设置的数据等等。

2、ini文件格式

ini 文件是文本文件,文件格式一般为:

[Section1 Name]

KeyName1=value1

KeyName2=value2

...

[Section2 Name]

KeyName1=value1

KeyName2=value2

 

从上面的文件格式可以看出:ini 文件分为几个 Section,每个 Section 的名称用 [] 括起来;在一个 Section 中,可以有很多的 Key,每一个 Key 可以有一个值并占用一行,格式是 Key=value。

3、ini文件的操作函数

/* 功能:GetPrivateProfileInt - 从 ini 文件的某个 Section 取得一个 key 的整数值

 * 参数:

 *           lpAppName:指向包含 Section 名称的字符串地址

 *           lpKeyName:指向包含 Key 名称的字符串地址

 *           INT nDefault:如果 Key 值没有找到,则返回缺省的值是多少

 *           lpFileName :ini 文件的文件名

 * 返回值:

如果 Key 值没有找到的话,返回值是 nDefault 指定的缺省值,如果 Key 中的

值是负数,则返回 0,如果 Key 指定的是数字和字符串的混合,则返回数字部分的值,比如说 x=1234abcd,则返回 1234

 */

UINT GetPrivateProfileInt( LPCTSTR lpAppName,  LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName);

 

 

/* 功能:GetPrivateProfileString - 从 ini 文件的某个 Section 取得一个 key 的字符串

 * 参数:

 *           lpAppName:指向包含 Section 名称的字符串地址

 *           lpKeyName:指向包含 Key 名称的字符串地址

 *           lpDefault:如果 Key 值没有找到,缺省返回缺省的字符串

 *           lpReturnedString:用于保存返回字符串的缓冲区

 *           nSize: 缓冲区的长度

 *           lpFileName :ini 文件的文件名

 * 返回值:

返回的字符串在缓冲区lpReturnedString内,返回值是返回的字符串的长度(不包括尾部的\0)

 */

DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);

 

 

/* 功能:GetPrivateProfileSection - 从 ini 文件中读出整个 Section 的内容

 * 参数:

 *           lpAppName:指向包含 Section 名称的字符串地址

*           lpReturnedString:用于保存返回数据的缓冲区

 *           nSize: 缓冲区的长度

 *           lpFileName :ini 文件的文件名

 * 返回值:

返回的数据在缓冲区内,返回值是返回的数据的长度(不包括尾部的\0)

 */

DWORD GetPrivateProfileSection(LPCTSTR lpAppName, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);

 

/* 功能:GetPrivateProfileSectionNames - 从 ini 文件中获得 Section 的名称

 * 参数:

 *           lpszReturnBuffer:用于保存返回数据的缓冲区

 *           nSize: 缓冲区的长度

 *           lpFileName :ini 文件的文件名

 * 返回值:

返回读入缓冲区的字符数

*/

DWORD GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer, DWORD nSize, LPCTSTR lpFileName);

 

 

/* 功能:WritePrivateProfileSection将一个整个 Section 的内容入 ini 文件的指定 Section 中

 * 参数:

 *           lpAppName:指向包含 Section 名称的字符串地址

 *           lpString:要写入的数据

 *           lpFileName :ini 文件的文件名

 * 返回值:

            写入成功返回TRUE;写入失败返回FALSE

*/

BOOL WritePrivateProfileSection(LPCTSTR lpAppName, LPCTSTR lpString, LPCTSTR lpFileName);

 

 

/* 功能:WritePrivateProfileString - 将一个 Key 值写入 ini 文件的指定 Section 中

 * 参数:

 *           lpAppName:指向包含 Section 名称的字符串地址

 *           lpKeyName:指向包含 Key 名称的字符串地址

 *           lpString:要写入的字符串

 *           lpFileName :ini 文件的文件名

* 返回值:

            写入成功返回TRUE;写入失败返回FALSE

*/

BOOL WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName);

 

如果 ini 中没有指定的 Section,API 会新建 Section,如果没有指定的 Key 则新建一个 Key 并写入数据,如果已经存在,则用字符串代替原来的值。当指定的 ini 也不存在的时候,API 会自动建立一个新的文件,所以使用 ini 的好处是我们不必为了保存少量的数据涉及到文件操作,就连查找文件是否存在的操作都不必要。

 

使用要点:

在我们实际使用的时候,用的最多的是 GetPrivateProfileString 和 WritePrivateProfileString,但在对自定义 ini 文件操作的时候要注意的是:

1、ini文件的路径必须完整,文件名前面的各级目录必须存在。如果 lpFileName 指定的文件没有路径的话,api 会去 Windows 的安装目录去找而不会在当前目录找;

2、文件名的路径中必须为 \\ ,因为在VC++中,\\ 才表示一个 \ ;

3、.\表示当前目录。如果ini文件放在程序所在目录中(即当前目录中),你只要在 ini 文件名前面加上 .\ 就可以了,比如说要操作当前目录下的 user.ini,那么文件名就是".\\user.ini";

4、要把一个 Key 清除时,可以使用WritePrivateProfileString向该Key写个空字符串。当你要把一个section的全部内容清空的时候,也不必把 key 一个个的清除,可以使用WritePrivateProfileSection向该Section写个空字符串。

 

 

另外,还有一组api专门用于操作win.ini文件。这组API与上面的很像,只要把上面一组的PrivateProfile 换成就可以了,参数中也相应的少了一个 ini 文件名的参数。

UINT GetProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault );

DWORD GetProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize);

GetProfileSection(LPCTSTR lpAppName, LPTSTR lpReturnedString, DWORD nSize);

BOOL WriteProfileSection(LPCTSTR lpAppName, LPCTSTR lpString);

BOOL WriteProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString);

 

win.in 和 system.ini 是Windows的两个非常重要的初始化文件,Windows将用户所作的选择以及各种变化的系统信息记录在这两个文件中。System.ini 描述了系统硬件的当前状态,Win.ini 文件则包含了Windows 系统运行环境的当前配置。

 

 

参考文献:

http://www.98exe.net/Article/c/2004-12-02/49.html

http://bbs.linuxsky.org/thread-582-1-8.html

http://zhidao.baidu.com/question/14261559

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载