您的位置:首页 > 编程语言 > PHP开发

简述配置文件ini及其操作函数GetPrivateProfileString等

2016-09-19 18:03 633 查看
1、概述ini是微软Windows操作系统中的文件扩展名。这些字母表示初始化。正如该术语所表示的,ini文件被用来对操作系统或特定程序初始化或进行参数设置。在编写程序时,我们可以使用ini 文件(Profile)来保存少量数据,比如本次程序执行时窗口的位置、大小、一些用户设置的数据等等。2ini文件格式ini 文件是文本文件,文件格式一般为:[Section1 Name]KeyName1=value1KeyName2=value2...[Section2 Name]KeyName1=value1KeyName2=value2 从上面的文件格式可以看出:ini 文件分为几个 Section,每个 Section 的名称用 [] 括起来;在一个 Section 中,可以有很多的 Key,每一个 Key 可以有一个值并占用一行,格式是 Key=value。3ini文件的操作函数/* 功能: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://blog.chinaunix.net/uid-23089249-id-34478.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  读取ini配置文件