2007年1月31日星期三

利用API函数直接读写ini文件

利用API函数直接读写ini文件

我们可利用API函数直接读写ini文件。

㈠ 读ini文件中的项值

① 读整数值:


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

 

lpAppName为段名,lpKeyName为项名,nDefault为找不到该项时返回的默认值,lpFileName为ini文件名

返回值:若成功,返回指定项后的整数值,若该项不存在,返回nDefault的值

如:读取RAV.ini文件中[INSTALLED]段的FWBASE2K项的值


int FwbBase2K = ::GetPrivateProfileInt("INSTALLED", "FWBASE2K", 0, "RAV.ini");

 

如果[INSTALLED]段的FWBASE2K项存在,则FwbBase2K的值为读出的值,若不存在,则为函数调用中指定的0。

② 读字符串:


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


 

lpAppName为段名,lpKeyName为项名,lpDefault为找不到该项时返回的默认值,lpReturnedString指向接收结果的字符串缓冲区,nSize为缓冲区长度,lpFileName为ini文件名

执行结果:若成功,lpReturnedString指示的串中为读出的项值,若该项不存在,lpReturnedString中为lpDefault的值

如:读取RAV.ini文件中 [Skin]段的Path项的值


CString PathName;   //接收串的变量

::GetPrivateProfileString("Skin", "Path", "", PathName.GetBuffer(MAX_PATH), MAX_PATH, "RAV.ini");

PathName.ReleaseBuffer ();   //释放多余空间


 

MAX_PATH为系统预定义的常数,其值可能是255。

㈡ 把数据写入ini文件

写入时没有写入整数的函数,只有写入字符串的函数


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

 

lpAppName为段名,lpKeyName为项名,lpString为写入的字符串,lpFileName为ini文件名

返回值:若成功,返回true,否则返回false

若写入时,该ini文件不存在,则这个函数会自动建立这个文件,并建立相应的段和项。

如:把RAV.ini文件中[INSTALLED]段的FWBASE2K项的值设置为2,由于这是整数,应先转换为字符串后再写入


CString str;

str.Format("%d", 2);    //把写入的整数转换为字符串

::WritePrivateProfileString( "INSTALLED", "FWBASE2K", str, "RAV.ini" );  //写入ini文件

 

注意:实际应用中,ini文件名应采用绝对路径名,否则可能找不到要读写的ini文件。

没有评论: