VC配置文件ini的读写

ini配置文件的读写 很多时候,我们的程序运行前需要用户做一些相关的设置,而且我们总是需要把一些配置信息保存下来,那天一直在思考怎么解决这个问题,突然就想到了在一些软件安装目录下的ini文件,然后经过查找资料发现其实ini文件既方便又实用。下面对其使用进行总结: 一、将信息从ini文件中读取到变量中 首先,看一个ini文件的示例。 [连接参数] IpServer=127.0.0.1 DataBase=DB_TEST UserID=test Password=123456 ;注释用英文分号 以上就是一个简单的配置文档。读取信息所 阅读详情

       ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。

一、向ini文件中写入信息的函数

1. 把信息写入系统的win.ini文件

BOOL WriteProfileString(

      LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串

      LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节

     LPCTSTR lpString       // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键

)

2. 把信息写入自己定义的.ini文件

BOOL WritePrivateProfileString(

      LPCTSTR lpAppName,      // 同上

      LPCTSTR lpKeyName,      // 同上

      LPCTSTR lpString,       // 同上

      LPCTSTR lpFileName      // 要写入的文件的文件名。若该ini文件与程序在同一个目录下,也可使用相对

            //路径,否则需要给出绝度路径。

)

如:

::WriteProfileString("Test","id","xym");

//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym

::WritePrivateProfileString("Test","id","xym","d://vc//Ex1//ex1.ini");

//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym

//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:

::WritePrivateProfileString("Test","id","xym",".//ex1.ini");

需要注意的是,C系列的语言中,转义字符'//'表示反斜线'/'。另外,当使用相对路径时,//前的.号不能丢掉了。

二、从ini文件中读取数据的函数

1、从系统的win.ini文件中读取信息

(1) 读取字符串

DWORD GetProfileString(

      LPCTSTR lpAppName,            // 节名

      LPCTSTR lpKeyName,            // 键名,读取该键的值

      LPCTSTR lpDefault,            // 若指定的键不存在,该值作为读取的默认值

      LPTSTR lpReturnedString,      // 一个指向缓冲区的指针,接收读取的字符串

      DWORD nSize                   // 指定lpReturnedString指向的缓冲区的大小

)

如:

CString str;

::GetProfileString("Test","id","Error",str.GetBuffer(20),20);

(2) 读取整数

UINT GetProfileInt(

     LPCTSTR lpAppName,      // 同上

      LPCTSTR lpKeyName,      // 同上

      INT nDefault            // 若指定的键名不存在,该值作为读取的默认值

)

如使用以下语句写入了年龄信息:

::WriteProfileString("Test","age","25");

//在win.ini中创建一个Test节,并在该节中创建一个键age,其值为25

则可用以下语句读取age键的值:

int age;

age=::GetProfileInt("Test","age",0);

2、从自己的ini文件中读取信息

(1) 读取字符串

DWORD GetPrivateProfileString(

      LPCTSTR lpAppName,            // 同1(1)

      LPCTSTR lpKeyName,            // 同1(1)

      LPCTSTR lpDefault,            // 同1(1)

      LPTSTR lpReturnedString,      // 同1(1)

      DWORD nSize,                  // 同1(1)

      LPCTSTR lpFileName            // 读取信息的文件名。若该ini文件与程序在同一个目录下,也可使用相     

            //对路径,否则需要给出绝度路径。

)

如:

CString str;

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,".//ex1.ini");

或:

::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,"d://vc//Ex1//ex1.ini");

(2) 读取整数

UINT GetPrivateProfileInt(

      LPCTSTR lpAppName,      // 同上

      LPCTSTR lpKeyName,      // 同上

      INT nDefault,           // 若指定的键名不存在,该值作为读取的默认值

      LPCTSTR lpFileName      // 同上

)

 

如使用以下语句写入了年龄信息:

::WritePrivateProfileString("Test","age","25",".//ex1.ini");

//在ex1.ini中创建一个Test节,并在该节中创建一个键age,其值为25

 

则可用以下语句读取age键的值:

int age;

age=::GetPrivateProfileInt("Test","age",0,".//ex1.ini");

 

三、 删除键值或节

 

       回顾一下WriteProfileString函数的说明

BOOL WriteProfileString(

      LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串

      LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节

      LPCTSTR lpString       // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键

)

 

       由此可见,要删除某个节,只需要将WriteProfileString第二个参数设为NULL即可。而要删除某个键,则只需要将该函数的第三个参数设为 NULL即可。这是删除系统的win.ini中的节或键,类似的,要删除自己定义的ini文件中的节或键,也可做相同的操作。

       如:

::WriteProfileString("Test",NULL,NULL);      //删除win.ini中的Test节

::WriteProfileString("Test","id",NULL);      //删除win.ini中的id键

 

::WritePrivateProfileString("Test",NULL,NULL,".//ex1.ini");      //删除ex1.ini中的Test节

::WritePrivateProfileString("Test","id",NULL,".//ex1.ini");      //删除ex1.ini中的id键

 

四、如何判断一个ini文件中有多少个节

       要判断一个ini文件中有多少个节,最简单的办法就是将所有的节名都找出来,然后统计节名的个数。而要将所有的节名找出来,使用GetPrivateProfileSectionNames函数就可以了,其原型如下:

DWORD GetPrivateProfileSectionNames(

      LPTSTR lpszReturnBuffer,      // 指向一个缓冲区,用来保存返回的所有节名

      DWORD nSize,                  // 参数lpszReturnBuffer的大小

       LPCTSTR lpFileName            // 文件名,若该ini文件与程序在同一个目录下,

 

                                                //也可使用相对路径,否则需要给出绝度路径

)

 

下面的是用来统计一个ini文件中共有多少个节的函数,当然,如果需要同时找到每个节中的各个键及其值,根据找到节名就可以很容易的得到了。

 

 

/*统计共有多少个节

节名的分离方法:若chSectionNames数组的第一字符是'/0'字符,则表明

有0个节。否则,从chSectionNames数组的第一个字符开始,顺序往后找,

直到找到一个'/0'字符,若该字符的后继字符不是 '/0'字符,则表明前

面的字符组成一个节名。若连续找到两个'/0'字符,则统计结束*/

 

 

int CTestDlg::CalcCount(void)

{

TCHAR       chSectionNames[2048]={0};       //所有节名组成的字符数组

char * pSectionName; //保存找到的某个节名字符串的首地址

int i;       //i指向数组chSectionNames的某个位置,从0开始,顺序后移

int j=0;      //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量

int count=0;      //统计节的个数

 

//CString name;

//char id[20];

::GetPrivateProfileSectionNames(chSectionNames,2048,".//ex1.ini");  

for(i=0;i<2048;i++,j++)

{

      if(chSectionNames[0]=='/0')

       break;       //如果第一个字符就是0,则说明ini中一个节也没有

      if(chSectionNames[i]=='/0')

      {

       pSectionName=&chSectionNames[i-j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量,

            //就是一个节名的首地址

 

       j=-1;         //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量

            //赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名

 

            //的一部分

       /*::GetPrivateProfileString(pSectionName,"id","Error",id,20,".//ex1.ini");

       name.Format("%s",id);*/  

       //在获取节名的时候可以获取该节中键的值,前提是我们知道该节中有哪些键。

  

       AfxMessageBox(pSectionName);      //把找到的显示出来

 

       if(chSectionNames[i+1]==0)

       {

         break;      //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止

       }

      }  

}

return count;

}

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////

在VC程序中利用系统提供的GetPrivateProfileString及WritePrivateProfileString函数直接读写系统配置ini文件(指定目录下的Ini文件)

 

假设在当前目录下有一个文件名为Tets.ini的文件

用于保存用户名和密码

文件格式如下:

[Section1]

Item1=huzhifeng

Item2=1234565

 

1.写INI文件

void CINI_File_TestDlg::OnButtonWrite()

{

// TODO: Add your control notification handler code here

 

CString strSection        = "Section1";

CString strSectionKey    = "Item1";

char strBuff[256];

CString strValue       = _T("");

CString strFilePath;

 

strFilePath=GetCurrentDirectory(256,strBuff); //获取当前路径

strFilePath.Format("%s//Test.ini",strBuff);

 

GetDlgItemText(IDC_EDIT_NAME,strValue);     //获取文本框内容:即姓名

WritePrivateProfileString(strSection,strSectionKey,strValue,strFilePath); //写入ini文件中相应字段

 

strSectionKey="Item2";

GetDlgItemText(IDC_EDIT_PASSWORD,strValue);   //获取文本框内容:即密码

WritePrivateProfileString(strSection,strSectionKey,strValue,strFilePath);

}

 

2.读INI文件内容

void CINI_File_TestDlg::OnButtonRead()

{

// TODO: Add your control notification handler code here

CString strSection       = "Section1";

CString strSectionKey    = "Item1";

char strBuff[256];

CString strValue       = _T("");

CString strFilePath;

 

strFilePath=GetCurrentDirectory(256,strBuff); //获取当前路径

strFilePath.Format("%s//Test.ini",strBuff);

 

GetPrivateProfileString(strSection,strSectionKey,NULL,strBuff,80,strFilePath); //读取ini文件中相应字段的内容

strValue=strBuff;

SetDlgItemText(IDC_EDIT_NAME,strValue);

 

strSectionKey="Item2";

GetPrivateProfileString(strSection,strSectionKey,NULL,strBuff,80,strFilePath);

strValue=strBuff;

SetDlgItemText(IDC_EDIT_PASSWORD,strValue);

 

UpdateData(FALSE);

}

VC读写ini文件VC读写ini文件 VC读写ini文件,VC读写ini文件.rar,VC读写ini文件.rar,VC读写ini文件.rar,VC读写ini文件.rar, 立即下载

相关推荐

配置文件的访问的源码实现,包括GetProfileString, WriteProfileString,WriteProfileInt,GetProfileInt(与Windows API相同)

在windows API中有对配置文件或注册表访问的函数, 在开发应用程序中,经常需要通过这些接口访问你的配置文件, 这个源码实现了这些接口,如: GetProfileString, WriteProfileString, WriteProfileInt, GetProfileInt

VC中用 函数 读写ini文件的方法

VC中用函数读写ini文件的方法2007-05-31 15:23         ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个

kenny9931的专栏 2205

QGIS效率提升神器:qgis_mcp插件+VSCode联合工作流配置全解析

本文详细解析了如何通过配置qgis_mcp插件与VSCode的联合工作流,实现语音控制和代码自动化来大幅提升QGIS操作效率。该方案将自然语言交互与现代编辑器生态结合,为地理信息专业人士构建了智能、高效的全新工作模式,彻底改变传统GIS操作方式。

weixin_29228203的博客 191

ini配置文件读写操作入门

ini配置文件读写操作入门

AUTO1993的博客 4951

【实战解析】SAP EWM与PP深度集成:从后台配置到前台物料流转的全链路设计

本文深入解析SAP EWM与PP深度集成的全链路设计,涵盖后台配置与前台物料流转的实战应用。通过两种集成模式(DPI与API)的选择策略、十二个关键后台配置步骤详解,以及PMR生成、PSA补货等前台演示,帮助企业实现生产计划与物料供应的高效协同,显著提升生产效率和库存周转率。

weixin_30723433的博客 421

【Bug已解决】Claude Desktop Cowork 报错 Workspace unavailable 解决方案

方案适用场景推荐指数确认虚拟机镜像下载完整性排查的第一步,最基础的前提检查⭐⭐⭐⭐⭐确认虚拟机平台功能已启用Windows 系统功能层面的必要条件⭐⭐⭐⭐⭐重启 CoworkVMService快速尝试恢复服务正常状态⭐⭐⭐⭐完全重启客户端排除临时性状态错乱⭐⭐⭐⭐降级使用文件工具临时替代方案,不阻塞当前工作⭐⭐⭐报错的本质是Cowork 功能依赖的虚拟机管理服务,在 Windows 应用包隔离机制下未能正确定位虚拟机文件的实际存放路径。

博客 6234

在VC中读写ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR...

aizbtwne979781的博客 95

华为 MetaERP 总账模块依托 “交易即核算” 的事件驱动架构,与 Oracle EBS 相比,更强调业务事件自动触发财务动作、实时数据同步和智能规则引擎,实现业务与财务的深度融合

华为MetaERP总账模块采用"交易即核算"架构,相比Oracle EBS实现了三大突破:1)业务事件自动触发财务动作,如采购收货自动生成暂估凭证;2)业务财务数据实时同步,支持即时分析;3)内置智能规则引擎,实现自动匹配、核销和结转。该模块覆盖采购、销售、资产、薪酬等全业务场景,支持多维核算和关联交易自动抵消,显著提升核算效率与准确性。其中采购暂估、销售结转等场景实现全自动化处理,较EBS减少80%手工操作。

金牌架构师 225

vc 用函数读写INI配置文件

vc 用函数读写INI配置文件 ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。 一、向ini文件中写入信息的函数

chenzhisi的专栏 1127

Transformer实战(2)——循环神经网络详解

循环神经网络 (Recurrent neural networks, RNN) ,RNN 是在文本输入中广泛使用的神经网络。RNN 非常灵活,已被用于解决诸如语音识别、语言建模、机器翻译、情感分析和图像字幕等问题。RNN 利用输入的序列特性,序列输入可以是文本、语音、时间序列以及任何其他元素的出现取决于其前面元素的序列。在本节中,我们介绍了 RNN 及其变体,并学习如何使用 TensorFlow 进行实现。

盼小辉丶的博客 1万+

从数据库到数据仓库:数据仓库导论

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2784

在VC中读写ini配置文件的函数

 配置文件中经常用到ini文件,在VC中其函数分别为:   写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);   读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppNa

张奇的专栏 666

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 88

vc读写配置文件ini

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件: BOOL WritePrivateProfileString(   LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名   LPCTSTR lpKeyName,  // lpAppName 下的一个键名,也就是里面具体的变量名   LPCTSTR lpString, 

yumendetuzi的博客 403

Doris数据过期策略:自动清理历史数据

在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。

软件工程实践的博客 556

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC INI文件读写

 VC中用函数读写ini文件的方法         ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。一、向ini文件中写入信息的

zhoubl668的专栏:远帆,梦之帆! 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC ini配置文件读写

ini配置文件 GetPrivateProfileString GetPrivateProfileInt   WritePrivateProfileString 可使用XOR进行简单加密。

tongzhipeng5699的专栏 524

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC ini配置文件的读写

GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("R-ini")); GetDlgItem(IDC_BUTTON2)->SetWindowText(_T("W-ini")); void CiniFileRWDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //AfxMessageBo

Robins.lee_的博客 262
上一篇: C++容器和算法
下一篇: atoi,atol,strtod,strtol,strtoul实现类型转换
Elecsoft
博客等级 码龄17年 32粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值