PC Camera 开发日志(十六)------- INI 文件读写

 

不知道在哪里看到的了,现在把它们综合记于此。

 

我们写的程序中,总有一些配置信息需要保存下来,以便完成程序功能,最简单的办法就是将这些信息写入INI文件中,程序初始化的时候再读入。

具体应用如下:

 

一、将信息写入INI文件

1. 所用的WINAPI函数原型为----

  1.   BOOL   WritePrivateProfileString(   
  2.   LPCTSTR   lpAppName,   
  3.   LPCTSTR   lpKeyName,   
  4.   LPCTSTR   lpString,   
  5.   LPCTSTR   lpFileName   
  6.   ); 

其中各参数的意义:

  1.      LPCTSTR   lpAppName   是INI文件中的一个字段名.   
  2.     
  3.      LPCTSTR   lpKeyName   是lpAppName下的一个键名,通俗讲就是变量名.   
  4.     
  5.      LPCTSTR   lpString   是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.   
  6.     
  7.      LPCTSTR   lpFileName   是完整的INI文件名.   

2. 具体使用方法

设现有一名学生,需把他的姓名和年龄写入c:/stud/student.ini   文件中.

  1.   CString   strName,strTemp;   
  2.   int   nAge;   
  3.   strName="张三";   
  4.   nAge=12;   
  5.   ::WritePrivateProfileString("StudentInfo","Name",strName,"c://stud//student.ini");  

此时c:/stud/student.ini文件的内容如下:

[StudentInfo]

Name=张三

(注意没有分号,在张三名字之后)

 

3. 要将学生的年龄保持下来,只需将整型的值变为字符型即可:

  1.   strTemp.Format("%d",nAge);   
  2.   ::WritePrivateProfileString("StudentInfo","Age",strTemp,"c://stud//student.ini");  

二、将信息从INI文件中读入程序中的变量。

1. 所用的WINAPI函数原型为

  1.   DWORD   GetPrivateProfileString(   
  2.   LPCTSTR   lpAppName,     
  3.   LPCTSTR   lpKeyName,     
  4.   LPCTSTR   lpDefault,     
  5.   LPTSTR   lpReturnedString,     
  6.   DWORD   nSize,     
  7.   LPCTSTR   lpFileName     
  8.   ); 

其中各参数的意义:

前二个参数与WritePrivateProfileString中的意义一样。

  1.      lpDefault:  如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.     
  2.     
  3.      lpReturnedString:   接收INI文件中的值的CString对象,即目的缓存器.   
  4.     
  5.      nSize:   目的缓存器的大小.   
  6.     
  7.      lpFileName:   是完整的INI文件名.

2. 具体使用方法:要将上一步写入的学生信息读入程序中。

  1.   CString   strStudName;   
  2.   int   nStudAge;     
  3.   GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c://stud//student.ini");   

执行后,strStudName的值为“张三”,若前两个参数有误,其值为“默认姓名”。

 

3. 读入整型值需要另外一个WINAPI函数

  1.   UINT   GetPrivateProfileInt(   
  2.   LPCTSTR   lpAppName,     
  3.   LPCTSTR   lpKeyName,     
  4.   INT   nDefault,     
  5.   LPCTSTR   lpFileName     
  6.   ); 

参数的意义同上。使用方法如下:

  1. UINT nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c://stud//student.ini");  

三、循环写入多个值,设现有一程序,要将最近使用的几个文件名保存下来。

 

1. 写入

  1.   CString   strTemp,strTempA;   
  2.   int   i;   
  3.   int   nCount=6;//共有6个文件名需要保存   
  4.   for(i=0;i<nCount;++i)
  5.  {
  6.      strTemp.Format("%d",i);   
  7.      strTempA=文件名;//文件名可以从数组,列表框等处取得.   
  8.   ::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,   
  9.   "c://usefile//usefile.ini");   
  10.   }   
  11.   strTemp.Format("%d",nCount);   
  12.   ::WritePrivateProfileString("FileCount","Count",strTemp,"c://usefile//usefile.ini");//将文件总数写入,以便读出. 

2.读出

  1.   int nCount=::GetPrivateProfileInt("FileCount","Count",0,"c://usefile//usefile.ini");   
  2.   for(i=0;i<nCount;++i)
  3.  {
  4.   strTemp.Format("%d",i);   
  5.   strTemp="FileName"+strTemp;   
  6.   ::GetPrivateProfileString("CurrentIni",strTemp,"default.fil",   strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c://usefile//usefile.ini");   
  7. //使用strTempA中的内容.   
  8.     }  


    补充四点:  
   
     1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回   FALSE   值.  
   
     2.文件名的路径中必须为   //   ,因为在VC++中,   //   才表示一个   /   .  
   
     3.也可将INI文件放在程序所在目录,此时   lpFileName   参数为:   ".//student.ini".  
   
     4.从网页中粘贴源代码时,最好先粘贴至记事本中,再往VC中粘贴,否则易造成编译错误,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值