博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC中存取配置文件的操作,Profile操作
阅读量:2233 次
发布时间:2019-05-09

本文共 2610 字,大约阅读时间需要 8 分钟。

最近看程序,觉得配置文件挺有用的,所以花了一下午学习了一下,感觉收获还不小,现整理笔记如下:

 

 

 

    INI文件(Initialization file ,又称为初始化文件)是用来保存应用程序设置和选项的一种特殊的ASCII文件,以“.ini”作

为文件扩展名,也被称做配置文件或概要文件(Profile)。

    配置文件里的信息之所以能为系统和众多不同类型的应用程序读取并识别,是由于其内部对数据的存取采用了预先约定的“项-

值对(Entry-value pairs)”存储结构, 并对待存取的数据分门别类地进行存储。

下面是系统目录下Win.ini文件的部分内容:
[windows]
load=
run=
NullPort=None
[Desktop]
WallpaperStyle=2
Pattern=(无)
在此,配置文件将信息分为若干“节”,节标题放在方括号中,如“[Desktop]”就是Desktop节,在每一个节中包含了一些与之相关

的“项”,并通过等号对其进行赋值。一般形式如下:

[SECTION]
ENTRY=VALUE 
    在初始化文件中,VALUE值只能有两种数据类型:数值和字符串。Windows分别为这两种数据类型提供了两套API函数对初始化文

件进行数据读取,在写入初始化文件时则只支持对字符串的写入,数值等类型必须先进行数据类型的转换,然后才能写入到初始化文

件。

    私有初始化文件主要用来保存同应用程序当前状态相关的一些信息,当程序退出后,这些信息由于已写入到初始化文件而得以保

留,当程序再次运行时,可以通过对此初始化文件各项数据的读取而得知此应用程序在上次运行期间的相关信息。

 

=====================================================

程序关键代码:

INI文件格式:

[PROFILE_OPR]

NAME=王旭宁
NO=91044
TIME=2009年6月15日 17:20:37

 

读取配置文件:

    CString strTemp;

 GetPrivateProfileString("PROFILE_OPR", "NAME", "SOMEONE",

  strTemp.GetBuffer(1025), 1024, theApp.m_strStartPath+ "//ProfileOperation.ini");
 strTemp.ReleaseBuffer();
 m_strName = strTemp;

 int no = GetPrivateProfileInt("PROFILE_OPR", "NO",-1,theApp.m_strStartPath+ "//ProfileOperation.ini");

 strTemp.Format("%d",no);
 m_strNo = strTemp;

 GetPrivateProfileString("PROFILE_OPR", "TIME", "公元前200年",

  strTemp.GetBuffer(1025), 1024, theApp.m_strStartPath+ "//ProfileOperation.ini");
 strTemp.ReleaseBuffer();
 m_strLastTime = strTemp;

 

 

写配置文件:

 WritePrivateProfileString("PROFILE_OPR", "NAME",m_strName,

 theApp.m_strStartPath+ "//ProfileOperation.ini");
 WritePrivateProfileString("PROFILE_OPR", "NO",m_strNo,
  theApp.m_strStartPath+ "//ProfileOperation.ini");

 CString tem;

 CTime tm;
 tm = CTime::GetCurrentTime();//.Format("%m月%d日 %H:%M");
 //AfxMessageBox(tem);
 tem.Format("%d年%d月%d日 %d:%d:%d",tm.GetYear( ),tm.GetMonth( ),tm.GetDay(),tm.GetHour( ),tm.GetMinute( ) ,tm.GetSecond( ) );
 WritePrivateProfileString("PROFILE_OPR", "TIME",tem,
  theApp.m_strStartPath+ "//ProfileOperation.ini");

===========================================================

对私有初始化文件的数据存取是由GetPrivateProfileInt()、GetPrivateProfileString()和WritePrivateProfileString()等三个API函数来完成的。其函数说明如下:

 

 

UINT GetPrivateProfileInt(LPCTSTR lpAppName, // 节名地址

 LPCTSTR lpKeyName, // 项名地址
 INT nDefault, // 在项名没有找到时返回的缺省值
 LPCTSTR lpFileName // 初始化文件名地址
);
DWORD GetPrivateProfileString(LPCTSTR lpAppName, // 节名地址
 LPCTSTR lpKeyName, // 项名地址
 LPCTSTR lpDefault, // 缺省字符串
 LPTSTR lpReturnedString, // 存放字符串的缓冲区地址
 DWORD nSize, // 缓冲区大小
 LPCTSTR lpFileName // 初始化文件名地址
);
BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 节名地址
 LPCTSTR lpKeyName, // 项名地址
 LPCTSTR lpString, // 要写入的字符串地址
 LPCTSTR lpFileName // 初始化文件名地址
);

转载地址:http://bpbbb.baihongyu.com/

你可能感兴趣的文章
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>