现在的位置: 首页 > 综合 > 正文

轻松实现一个操作ini文件的类

2013年01月24日 ⁄ 综合 ⁄ 共 2255字 ⁄ 字号 评论关闭
 

前言

    相信很多朋友在编写自己的程序中,都需要把一些数据先期导入到程序中进行初始化。那么这个时候,比较好的做法就是把你所有的数据写入一个ini文件,然后在程序去读ini文件中的数据对行初始化。

 

.INI简介

       那么什么是ini文件呢?ini文件是Initialization file的缩写,意即初始化文件。(从名字就可以看出它的功能了吧)。不仅你自己的程序可以使用ini文件,其实windows操作系统也有自己的ini文件---win.ini,保存在%WinDir%/system32目录下。Windows通过该文件对当前操作系统进行配置。

    ini文件里的数据的存取是采取的是预先约定好的 “项-值”存储结构,各种数据被分门别类的存储。以下是win.ini 文件的部分内容。

[Mail]

MAPI=1

CMC=1

CMCDLLNAME=mapi.dll

CMCDLLNAME32=mapi32.dll

MAPIX=1

MAPIXVER=1.0.0.1

OLEMessaging=1

                    1

通过以上内容,我们可以看到,ini文件将各种数据分成很多以“[ ]”组成的节,而在每一个“节”中又包含了很多“项”,“项”后面紧跟着一个等号,等号后面则是该项的值。在该例中[Mail]就是一个“节”,MAPI是一个项,1则是MAPI的值。
    所以,它的通用形式我们可以总结成:

[Section]

Key=KeyValue

 

二.操作ini文件的API

windows SDK提供有两组APIini文件进行读写

GetPrivateProfileString

GetPrivateProfileInt

WritePrivateProfileString

GetPrivateProfileSection

WritePrivateProfileSection

GetPrivateProfileSectionNames

 

GetPrivateProfileStruct

WritePrivateProfileStruct

                                                                             2

 

GetProfileString

GetProfileInt

WriteProfileString

GetProfileSection

WritePrivateProfileSection

                                                                             3

    对用户的配置文件来说,一般我们使用的是表2中的函数,这一点从函数中的“private”就可以看出它是针对私有的配置文件的函数(又是废话!)。而表3中的函数则是提供给针对系统配置文件,即win.ini进行操作的函数。现只准备介绍表2中的函数,这也是使用率最高的,表3中的函数操作和表2中的函数操作类同,故略。

      
    现在我们来看看这几个函数的功能:

DWORD GetPrivateProfileString(

  LPCTSTR lpAppName,           //节名,即Section

  LPCTSTR lpKeyName,           //项名,即Key

  LPCTSTR lpDefault,                //缺省返回字符串。如lpKeyName未找到,拷贝lpDefaultlpReturnedString

  LPTSTR lpReturnedString,       //返回字符串的缓冲地址

  DWORD nSize,                       //缓冲大小

  LPCTSTR lpFileName             //ini文件路径

);

功能:根据指定的Section Key得到KeyValue,存放在lpReturnedString

返回:返回拷贝到缓冲中的字符个数。不包括结束符

 

UINT GetPrivateProfileInt(

  LPCTSTR lpAppName,           //节名,即Section
 
LPCTSTR lpKeyName          //项名,即Key

  INT nDefault,                           //缺省返回整型值。如lpKeyName未找到,函数返回nDefault的值

  LPCTSTR lpFileName             //ini文件路径

);

功能:根据指定的Section Key得到整型KeyValue

返回:返回得到的整型KeyValue

 

BOOL WritePrivateProfileString(

  LPCTSTR lpAppName,           //节名,即Section
 
LPCTSTR lpKeyName,           //项名,即Key

  LPCTSTR lpString,                  //要写入的字符串

  LPCTSTR lpFileName             //ini文件路径

功能:向指定的Section Key写入KeyValue。
      如果lpStringNULL,则删除当前lpKeyName

    如果lpKeyName=lpString=NULL,则删除当前Section以及其下的所有

抱歉!评论已关闭.