HardBirch

配置文件INI的操作

时间:12-02-16 栏目:iOS游戏开发技术 作者:张飞不张,文采横飞 评论:0 点击: 1,205 次

 

1:Win.ini文件的写入
  使用 的WritePrivateProfileString()函数,函数声明是
   BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR

lpKeyName,LPCTSTR lpstring);
   其中lpAppName表示包含了复制到Win.ini中的段的段名,如果不存在该段,则创建

这个段;lpKeyName包含了一个键的名字,没有该键则创建,如果该参数为NULL,则整

个段,包括段中所有的项都将被删除;lpstring是被写入Win.ini文件的字符串,如果

是NULL,则lpKeyName指定的键都会被删除
2:获取INI文件的数据
  DWORD GetPrivateProfilString(LPCTSTR lpAppName,LPCTSTR

lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString,DWORD nSize,LPTSTR

lpFileName)
   其中lpAppName表示段(节)名,如果该参数为NULL,函数将复制所有节名导所标志

的缓冲区中
   lpKeyName表示键名,如果该参数为NULL,函数将复制lpAppName段下的键名的缓冲

区中
  lpDefault表示默认值
   lpReturnedString表示用于接收数据的缓冲区;
     nSize一字符为单位表示lpReturnedString缓冲区的大小
    lpFileName表示文件名称
3:从INI文件获取整型数据
UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT

nDefault,LPCTSTR lpFileName)
4:从INI文件获取所有节名(段名)
DWORD GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer,DWORD

nSize,LPCTSTR lpFileName)
    lpszReturnBuffer表示接受节名的缓冲区
      nSize缓冲区大小
5:返回指定节下的所有键名和键值
 DWORD GetPrivateProfileSection(LPCTSTR lpAppName,LPTSTR

lpReturnedString,DWORD nSize,LPCTSTR lpFileName)
    lpAppName表示节名

 

void CIniDlg::OnWrite()
{
  UpdateData(true);
  CString jie,jian1,jian2,jian3;

  CFileDialog dlg(false);
  dlg.m_ofn.lpstrTitle="INI保存为";
  dlg.m_ofn.lpstrFilter="ini files(*.ini)*.iniAll files(*.*)*.*

";

  CString path;
  if(dlg.DoModal()==IDOK)
  {
   path=dlg.GetPathName();
   if(path.Right(4)!=".ini")
    path+=".ini";
   m_jie.GetWindowText(jie);
   m_jian1.GetWindowText(jian1);
   m_jian2.GetWindowText(jian2);
   m_jian3.GetWindowText(jian3);
    WritePrivateProfileString(jie,jian1,m_zhi1,path);
    WritePrivateProfileString(jie,jian2,m_zhi2,path);
    WritePrivateProfileString(jie,jian3,m_zhi3,path);
  }

}

void CIniDlg::OnRead()
{
 UpdateData(false);
  CFileDialog dlg(true);
  dlg.m_ofn.lpstrTitle="读取文件";
  dlg.m_ofn.lpstrFilter="ini  files(*.ini)*.iniAll files(*.*)*.*

";
  CString strPath;
  if(dlg.DoModal()==IDOK)
  {

  strPath = dlg.GetPathName();    

//获得文件路径
  CString section;     

      //定义字符串变量
  GetPrivateProfileSectionNames(section.GetBuffer

(0),100,strPath); //获取节名
  char keys[MAX_PATH]= {0};    

     //定义一个字符数组
  GetPrivateProfileSection

(section,keys,MAX_PATH,strPath);  //获取键名和键值
  char *cmp = "=";     

      //定义一个字符指针
  int pos = strcspn(keys,cmp);    

     //查找=在字符串中的位置
  char vals[MAX_PATH] = {0};    

     //定义字符数组
  strncpy(vals,keys,pos);     

     //赋值键名
  char* ptmp = keys+pos+1;    

      //将字符指针指向键值
  m_jie.SetWindowText(section);    

    //设置编辑框节名文本
  m_jian1.SetWindowText(vals);    

    //设置编辑框键名文本
  //m_ValOne.SetWindowText(ptmp);
  m_zhi1=ptmp;//设置编辑框键值文本
  int len = strlen(ptmp);     

     //获取字符串长度
  ptmp +=len+1;      

      //指向下一个键名
  pos = strcspn(ptmp,cmp);    

      //查找=在字符串中的位置
  memset(vals,0,MAX_PATH);    

     //初始化vals
  strncpy(vals,ptmp,pos);     

     //赋值键名
  m_jian2.SetWindowText(vals);    

    //设置键名文本
  ptmp +=pos+1;      

      //指向键值
  //m_ValTwo.SetWindowText(ptmp);
  m_zhi2=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_jian3.SetWindowText(vals);
  m_zhi3=ptmp;      

//设置编辑框键名文本
  //m_ValThree.SetWindowText(ptmp);   

     //设置编辑框键值文本
  }

}

 

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: 配置文件INI的操作

配置文件INI的操作:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐