资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

高分求VC中访问ini 文件的代码,

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

高分求VC中访问ini   文件的代码,  
   
  提供思路也行,  
   
  顶的有分.不够可以再给.

网友回答:

发表者:zuozl

好像是GetPrivateString什么的吧,我现在没装msdn,记不太清了。

发表者:he_zhidan

一,使用CFile  
  void   CReadWriteIniDlg::OnButton1()    
  {  
  CFile   file;  
   
  //写文件  
  file.Open("f:\\test.ini",CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate);  
  file.Write("0123456789",10);  
  file.Close();  
   
          //读文件  
  file.Open("f:\\test.ini",CFile::modeRead|CFile::modeCreate|CFile::modeNoTruncate);  
  int   nLength     =   file.GetLength();  
  char   *   pszBuff   =   new   char[nLength   +   1   ];  
  file.Read(pszBuff,nLength);  
  pszBuff[nLength]   =   \0   ;  
  MessageBox(pszBuff);  
  delete   []   pszBuff;  
  file.Close();  
  }  
   
  CFile::modeCreate|CFile::modeNoTruncate风格的作用:文件存在就打开,不存在就创建新文件.  
  |是位或,这儿也可以用+.  
  Read,Write存取的数据大小限制于64k以内,如果数据大于64K,则用ReadHuge,WriteHuge.  
   
  二.用   CStdioFile  
   
  void   CReadWriteIniDlg::OnButton2()    
  {  
  CStdioFile   file   ;  
   
  file.Open("f:\\test.ini",CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate);  
   
  //写文件  
  file.WriteString("ABCDEFG\n");  
  file.WriteString("abcdefg\n");  
   
  //读文件  
  file.SeekToBegin();//将文件指针移动到最后  
  char   szText[1000];  
  while(NULL   !=   file.ReadString(szText,999))  
  MessageBox(szText);  
   
  file.Close();  
  }  
   
  三,以ini的形式存取.  
  UINT   GetProfileInt(   LPCTSTR   lpszSection,   LPCTSTR   lpszEntry,   int   nDefault   );  
  BOOL   WriteProfileInt(   LPCTSTR   lpszSection,   LPCTSTR   lpszEntry,   int   nValue   );  
   
  CString   GetProfileString(   LPCTSTR   lpszSection,   LPCTSTR   lpszEntry,   LPCTSTR   lpszDefault   =   NULL   );  
  BOOL   WriteProfileString(   LPCTSTR   lpszSection,   LPCTSTR   lpszEntry,   LPCTSTR   lpszValue   );  
   
   
   
   
  void   CReadWriteIniDlg::OnButton3()    
  {  
  //写注册表  
  AfxGetApp()->WriteProfileString("Section","key","value");  
  //ReadWriteIni.ini(与可执行程序同名)的内容如下  
  //[Section]  
          //key=value  
   
  //如果文件或Section或key不存在,则返回第三个参数的值  
  CString   strVaule   =   AfxGetApp()->GetProfileString("Section","key","Default");  
  }  
  如果不想写在ini中,可添加如下代码,因为SetRegistryKey是保护级的,所以内能在加在C…App中.  
  BOOL   CReadWriteIniApp::InitInstance()  
  {  
  //不写ini,直接写在注册表的HKEY_CURRENT_USER\Software\csdn\ReadWriteIni  
  SetRegistryKey("csdn");  
  ….  
  }  
   
   
  void   CReadWriteIniDlg::OnButton4()    
  {  
  CString   strFileName   =   "f:\\test.ini";  
  //strFileName文件名  
  WritePrivateProfileString("Section","key","value",strFileName);  
  char   szValue[1000];  
  GetPrivateProfileString("Section","key","Default",szValue,999,strFileName);  
  }  
 

发表者:zuozl

GetPrivateProfileString()  
  GetPrivaetProfileInt()  
  等API可以实现。

发表者:laiyiling

BOOL   WritePrivateProfileString(  
  LPCTSTR   lpAppName,  
  LPCTSTR   lpKeyName,  
  LPCTSTR   lpString,  
  LPCTSTR   lpFileName  
  );    
    其中各参数的意义:  
     LPCTSTR   lpAppName   是INI文件中的一个字段名.  
     LPCTSTR   lpKeyName   是lpAppName下的一个键名,通俗讲就是变量名.  
     LPCTSTR   lpString   是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.  
     LPCTSTR   lpFileName   是完整的INI文件名.  
  //////////////////////////////  
  CString   strName,strTemp;  
  int   nAge;  
  strName="张三";  
  nAge=12;  
  ::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");    
    此时c:\stud\student.ini文件中的内容如下:  
     [StudentInfo]  
     Name=张三  
  要将学生的年龄保存下来,只需将整型的值变为字符型即可:  
  strTemp.Format("%d",nAge);  
  ::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");    
  读字符串:  
  CString   strStudName;  
  int   nStudAge;    
  GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");    
  执行后   strStudName   的值为:"张三",若前两个参数有误,其值为:"默认姓名".  
  这里的参数意义与上相同.使用方法如下:  
  读数值要用另一个函数:  
  nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");

发表者:twilight_oooo

如果是取字符串,用GetPrivateProfileString()函数,如果是取整行数据,使用GetPrivateProfileInt()函数,查以下msdn就知道了;举一个取字符串的例子吧:  
   
  char   sConfigSection[50+1];  
  char   sUser[30+1];  
  strcpy(sConfigSection,"DB   Conncetion");  
  GetPrivateProfileString(sConfigSection,"User",",sUser,30,CONFIG_FILE);

发表者:vcstar80

//Ini文件的读写  
   
  //写  
          ::WritePrivateProfileString("StudentName","Name","Alon",".\\STUDENT.ini");  
          ::WritePrivateProfileString("StudentCount","Count","1",".\\STUDENT.ini");  
   
   
  //读  
          //读字符串  
          ::GetPrivateProfileString("StudentName","Name",NULL,strStudentName.GetBuffer(128),128,".\\STUDENT.ini");   //128为缓冲区大小  
           
          //读整型数  
          int   Count=::GetPrivateProfileInt("StudentCount","Count",0,".\\STUDENT.ini");    
   
 

发表者:flypigluo

用GetPrivateProfileString和WritePrivateProfileString差不多就可以搞定了

发表者:nwpulipeng

帮顶混分


 

 
热门推荐笔记本: 联想笔记本
相关文章:
笔记本相关:
IT技术文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved