编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 读写INI文件
共有回复1条  每页10条  第1页/共1页  首页  上页  下页  尾页
1
  · 读写INI文件

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 14:03:51
          楼主

读写INI文件
为了方便地读写INI文件,系统提供了函数。下面分别进行介绍。
(1)WritePrivateProfileString
该函数用于向Ini文件中写入一个字符串数据。
语法:
BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString, LPCTSTR lpFileName);
参数说明:
 lpAppName:表示节名。如果Ini文件中节名不存在,将创建一个节名。
 lpKeyName:表示键名。如果该键名在所在的节中不存在,将创建一个键名。如果该参数为NULL,包括节及节下的所有项目都将被删除。
 lpString:表示写入到键值中的数据。
 lpFileName:表示INI文件的名称。
 提示:WritePrivateProfileString函数不仅可以设置键名和键值,并且可以修改键名,如果第2个参数表示的键名不存在,将在INI文件中创建一个新的键名。
(2)GetPrivateProfileString
该函数用于获取INI文件中的字符串数据。
语法:
DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);
参数说明:
 lpAppName:表示节名。如果该参数为NULL,函数将复制所有的节名到所标识的缓冲区中。
 lpKeyName:表示键名。如果该参数为NULL,函数将lpAppName节下所有的键名复制到lpReturnedString缓冲区中。
 lpDefault:表示默认值。
 lpReturnedString:表示用于接收数据的缓冲区。
 nSize:以字符为单位表示lpReturnedString缓冲区的大小。
 lpFileName:表示文件名称。
(3)GetPrivateProfileInt
该方法用于从Ini文件中获取整型数据。
语法:
UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);
参数说明:
 lpAppName:表示节名。如果该参数为NULL,函数将复制所有的节名到所标识的缓冲区中。
 lpKeyName:表示键名。如果该参数为NULL,函数将lpAppName节下所有的键名复制到lpReturnedString缓冲区中。
 nDefault:表示默认值。
 lpReturnedString:表示用于接收数据的缓冲区。
 返回值:函数返回实际读取的整数值。
(4)GetPrivateProfileSectionNames
该函数用于返回INI文件中的所有节名。
语法:
DWORD GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer,DWORD nSize,LPCTSTR lpFileName);
参数说明:
 lpszReturnBuffer:表示接收节名的数据缓冲区。
 nSize:表示缓冲区的大小。
 lpFileName:表示INI文件名称。
(5)GetPrivateProfileSection
该函数返回指定节下所有的键名和键值。
语法:
DWORD GetPrivateProfileSection(LPCTSTR lpAppName,LPTSTR lpReturnedString,DWORD nSize,  LPCTSTR lpFileName);
参数说明:
 lpAppName:表示节名。
 lpReturnedString:表示接收数据的缓冲区。
 nSize:表示缓冲区的大小。
 lpFileName:表示INI文件名称。
下面以一个示例介绍如何读写Ini文件。
例如,读写Ini文件
(1)创建一个基于对话框的工程,工程名称为“OperateIniFile”,设计对话框资源如图1所示。
 
图1  对话框资源设计窗口
(2)处理“确定”按钮的单击事件,向INI文件中写入数据。
void COperateIniFileDlg::OnOK()
{
 CString section,keyOne,keyTwo,keyThree,
   valOne,valTwo,valThree;       //定义字符串变量
 m_Section.GetWindowText(section);       //获取节名
 m_KeyOne.GetWindowText(keyOne);      //获取键名
 m_KeyTwo.GetWindowText(keyTwo);      //获取键名
 m_KeyThree.GetWindowText(keyThree);      //获取键名
 m_ValOne.GetWindowText(valOne);       //获取键值
 m_ValTwo.GetWindowText(valTwo);       //获取键值
 m_ValThree.GetWindowText(valThree);      //获取键值
 WritePrivateProfileString(section,keyOne,valOne,"c:\setting.ini"); //写入键名和键值
 WritePrivateProfileString(section,keyTwo,valTwo,"c:\setting.ini"); //写入键名和键值
 WritePrivateProfileString(section,keyThree,valThree,"c:\setting.ini"); //写入键名和键值
}
(3)处理“读取”按钮的单击事件。从INI文件中读取数据。
void COperateIniFileDlg::OnRead()
{
 CString section;           //定义字符串变量
 GetPrivateProfileSectionNames(section.GetBuffer(0),100,"c:\setting.ini"); //获取节名
 char keys[MAX_PATH]= {0};         //定义一个字符数组
 GetPrivateProfileSection(section,keys,MAX_PATH,"c:\setting.ini");  //获取键名和键值
 char *cmp = "=";           //定义一个字符指针
 int pos = strcspn(keys,cmp);         //查找=在字符串中的位置
 char vals[MAX_PATH] = {0};         //定义字符数组
 strncpy(vals,keys,pos);          //赋值键名
 char* ptmp = keys+pos+1;          //将字符指针指向键值
 m_Section.SetWindowText(section);        //设置编辑框节名文本
 m_KeyOne.SetWindowText(vals);        //设置编辑框键名文本
 m_ValOne.SetWindowText(ptmp);        //设置编辑框键值文本
 int len = strlen(ptmp);          //获取字符串长度
 ptmp +=len+1;            //指向下一个键名
 pos = strcspn(ptmp,cmp);          //查找=在字符串中的位置
 memset(vals,0,MAX_PATH);         //初始化vals
 strncpy(vals,ptmp,pos);          //赋值键名
 m_KeyTwo.SetWindowText(vals);        //设置键名文本
 ptmp +=pos+1;            //指向键值
 m_ValTwo.SetWindowText(ptmp);        //设置键值编辑框文本
 len = strlen(ptmp);           //获取字符串长度
 ptmp +=len+1;            //指向下一个键名
 pos = strcspn(ptmp,cmp);          //查找=在字符串中的位置
 memset(vals,0,MAX_PATH);         //初始化vals
 strncpy(vals,ptmp,pos);          //赋值键名
 ptmp += pos+1;            //指向键值
 m_KeyThree.SetWindowText(vals);        //设置编辑框键名文本
 m_ValThree.SetWindowText(ptmp);        //设置编辑框键值文本
}
(4)运行程序,效果如图2所示。
 
图2  操作INI文件

 

本帖赏分:0 分   回复数:1 篇     
修改   删除   引用   回复
  · 学习

用户:  yuanyeguhong
发帖:  0 篇
作品:  0 个
回复:  3 篇
技术分:  36 分
等级:  学员
注册:  2010-12-01 19:51:43



回复于:2010-12-01 19:54:51
         1 楼
呵呵,终于找着个详细的解说…………
修改   删除   引用
共有回复1条  每页10条  第1页/共1页  首页  上页  下页  尾页
1
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页