ini文件读写解决方案.docx

上传人:b****5 文档编号:12087190 上传时间:2023-04-17 格式:DOCX 页数:7 大小:18.37KB
下载 相关 举报
ini文件读写解决方案.docx_第1页
第1页 / 共7页
ini文件读写解决方案.docx_第2页
第2页 / 共7页
ini文件读写解决方案.docx_第3页
第3页 / 共7页
ini文件读写解决方案.docx_第4页
第4页 / 共7页
ini文件读写解决方案.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

ini文件读写解决方案.docx

《ini文件读写解决方案.docx》由会员分享,可在线阅读,更多相关《ini文件读写解决方案.docx(7页珍藏版)》请在冰豆网上搜索。

ini文件读写解决方案.docx

ini文件读写解决方案

ini文件读写解决方案

  篇一:

ini配置文件的读写

  ini配置文件的读写

  很多时候,我们的程序运行前需要用户做一些相关的设置,而且我们总是需要把一些配置信息保存下来,那天一直在思考怎么解决这个问题,突然就想到了在一些软件安装目录下的ini文件,然后经过查找资料发现其实ini文件既方便又实用。

下面对其使用进行总结:

  一、将信息从ini文件中读取到变量中

  首先,看一个ini文件的示例。

  [连接参数]

  IpServer=

  DataBase=DB_TEST

  UserID=test

  Password=123456

  ;注释用英文分号

  以上就是一个简单的配置文档。

读取信息所用的函数为

  DWORDGetPrivateProfileString(

  LPCTSTRlpAppName,//sectionname

  LPCTSTRlpKeyName,//keyname

  LPCTSTRlpDefault,//defaultstring

  LPTSTRlpReturnedString,//destinationbuffer

  DWORDnSize,//sizeofdestinationbufferLPCTSTRlpFileName//initializationfilename);

  第一个参数为字段名,上例中的[连接参数];第二个参数键名,即变量名,上例中的IpServer、DataBase等等;第三个参数指,如果ini文件中没有前两个参数指定的字段名或键名,则将lpDefault的值赋给变量,也就是缺省值;第四个参数是接收ini文件中键名的值的CString对象,即目的缓存器;第五个参数是目的缓存器的大小;第六个参数是ini文件的完整路径。

如下:

GetPrivateProfileString(L"连接参数",L"ipServer",L"",

  (MAX_PATH),MAX_PATH,curPath);

  在此额外说一点,一般来说ini文件和exe文件是放在一起的,所以这里涉及到当前路径的问题,该问题在《如何获取EXE可执行文件的所在路径》一文中讲得很清楚,而在此我用另一个全局函数也可以实现,假如我们的文件是配置.ini,则如下:

  CStringcurPath;//存储路径的CString对象

  AfxGetModuleFileName(AfxGetInstanceHandle(),curPath);

  curPath=(('\\'))+'\\';

  (L"配置.ini");

  或者还可以使lpFileName的值为:

“.//配置.ini”来定位到当前目录(这种方法笔者还未测试)。

  此外,读取整型值便要用另一个函数:

  UINTGetPrivateProfileInt(

  LPCTSTRlpAppName,//sectionname

  LPCTSTRlpKeyName,//keyname

  INTnDefault,//returnvalueifkeynamenotfoundLPCTSTRlpFileName//initializationfilename

  );

  二、将配置信息保存到ini文件中

  类似地,所用函数为:

  BOOLWritePrivateProfileString(

  LPCTSTRlpAppName,//sectionname

  LPCTSTRlpKeyName,//keyname

  LPCTSTRlpString,//stringtoadd

  LPCTSTRlpFileName//initializationfile

  );

  参数与读取的时候意义基本一致,而且比读取的时候更简单一点,在此不作赘述。

  最后,需要注意的一点是,文件名的路径中反斜杠必须为\\才表示\,第一个为转义字符。

  篇二:

ini文件读写模块设计

  ini文件读写模块设计

  1.引言

  模块概述

  模块通过Linux的基本I/O函数实现,实现读写ini文件功能。

Ini文件格式参考附录二ini文件格式。

  由于ini文件的特殊格式,模块内部每次在读写ini文件键值时需从文件头查找对应节和对应键,再进行读写操作,在写改写ini文件时需首先建立临时文件,将原ini文件中改写数据之前的数据添加到临时文件,再将需要改写的数据追加到临时文件,然后把原ini文件改写数据之后的数据添加到临时文件尾最后删除原ini文件,将临时文件名改为正式ini文件名完成一次ini文件改写操作。

每次调用调用操作临时文件时,需要重新打开临时文件(模块内部不保存打开的临时文件指针)。

  应用程序调用该模块进行读写操作流程如下:

  词汇表

  约定

  文件名:

  模块中其他模块的接口函数前缀:

ini_,须在模块头文件中声明,其他为文件内部使用函数在声明时加static前缀。

  与其他模块关系

  无

  第1页共9页石家庄泛安科技开发有限公司

  函数列表?

接口函数

  INT32Ini_Create(INT8sFileName[]);

  //读取字符键值

  INT32Ini_ReadString(INT8sSectionName[],INT8sKeyName[],INT8sValue[],

  INT32lReadLen,INT8sDefaultVal[])

  //读取整形键值

  INT32Ini_ReadInt(INT8sSectionName[],INT8sKeyName[],INT32lDefaultVal);//写键值(字符类型)

  INT32Ini_WriteString(INT8sSectionName[],INT8sKeyName[],INT8sValue[])//写键值(整型)

  INT32Ini_WriteIni(INT8sSectionName[],INT8sKeyName[],INT32lValue)//删除键

  INT32Ini_DeleteField(INT8sSectionName[],INT8sKeyName[])

  //删除节

  INT32Ini_DeleteSection(INT8sSectionName[])

  //关闭ini文件

  voidIni_Close()

  ?

局部函数

  //取得键行数据

  INT32GetKeyLine(INT8sSection[],INT8sKey[],INT8sData[],);

  //取得键行号

  INT32GetKeyLineNo(INT8sSection[],INT8sKey[]);

  //取得键值

  INT32GetKeyValue(INT8sLineBuffer[],INT8sData[]);

  //追加临时文件

  INT32AppendTmpFile(INT8sBuffer[]);

  //读取并追加临时文件

  INT32ReadAndAppendTmpFile(FILE*fd,INT32lStartLine,INT32lEndLine);//创建ini文件

  石家庄泛安科技开发有限公司第2页共9页

  模块内部函数调用关系

  ?

读取字符串Ini_ReadString

  ?

读取整形值Ini_ReadInt

  调用关系同Ini_ReadString,取得数据后将数据转换为整形。

  ?

写字段数据Ini_WriteString

  ?

删除节中对应字段Ini_DeleteField

  暂不实现。

  ?

删除节Ini_DeleteSection

  暂不实现

  2.数据结构说明

  结构定义

  无

  宏定义

  #defineLINEBUFFERLEN255;//读取行缓冲区

  第3页共9页石家庄泛安科技开发有限公司

  #defineTEMPFILENAME“”//临时文件名

  局部变量

  FILE*fd;//文件指针

  3.接口函数

  创建文件

  读取字符值

  调用流程如下:

读取整形数据

  石家庄泛安科技开发有限公司第4页共9页

  写字符数据

  调用流程如下:

  写整形数据

  删除字段

  第5页共9页

  石家庄泛安科技开发有限公司

  篇三:

读写INI文件的函数介绍

  读写INI文件函数的介绍

  INI文件就是扩展名为“ini”的文件。

在Windows系统中,INI文件是很多,最重要的就是“”、“”和“”。

该文件主要存放用户所做的选择以及系统的各种参数。

用户可以通过修改INI文件,来改变应用程序和系统的很多配置。

但自从Windows95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。

但在某些场合,INI文件还拥有其不可替代的地位。

本文就来探讨一下C#是如何对INI进行读写操作。

  INI文件的结构

  INI文件是一种按照特点方式排列的文本文件。

每一个INI文件构成都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。

其一般形式如下:

  [Section1]

  KeyWord1=Valuel

  KeyWord2=Value2

  ?

?

  [Section2]

  KeyWord3=Value3

  KeyWord4=Value4

  C#和Win32API函数

  C#并不像C++,拥有属于自己的类库。

C#使用的类库是.Net框架为所有.Net程序开发提供的一个共有的类库——.NetFrameWorkSDK。

虽然.NetFrameWorkSDK内容十分庞大,功能也非常强大,但还不能面面俱到,至少它并没有提供直接操作INI文件所需要的相关的类。

在本文中,C#操作INI文件使用的是Windows系统自带Win32的API函数——WritePrivateProfileString()和GetPrivateProfileString()函数。

这二个函数都位于“”文件中。

  我们知道在C#中使用的类库都是托管代码((来自:

小龙文档网:

ini文件读写解决方案)ManagedCode)文件,而Win32的API函数所处的文件,都是非托管代码(UnmanagedCode)文件。

这就导致了在C#中不可能直接使用这些非托管代码文件中的函数。

好在.Net框架为了保持对下的兼容,也为了充分利用以前的资源,提出了互操作,通过互操作可以实现对Win32的API函数的调用。

互操作不仅适用于Win32的API函数,还可以用来访问托管的COM对象。

C#中对Win32的API函数的互操作是通过命名空间“”中的“DllImport”特征类来实现的。

它的主要作用是指示此属性化方法是作为非托管DLL的输出实现的。

下面代码就是在C#利用命名空间“”中的“DllImport”特征类申明上面二个Win32的API函数:

  C#申明INI文件的写操作函数WritePrivateProfileString():

  [DllImport("kernel32")]privatestaticexternlongWritePrivateProfileString(stringsection,stringkey,stringval,stringfilePath);

  参数说明:

section:

INI文件中的段落;key:

INI文件中的关键字;val:

INI文件中关键字的数值;filePath:

INI文件的完整的路径和名称。

  C#申明INI文件的读操作函数GetPrivateProfileString():

  [DllImport("kernel32")]privatestaticexternintGetPrivateProfileString(stringsection,stringkey,stringdef,StringBuilderretVal,intsize,stringfilePath);

  参数说明:

section:

INI文件中的段落名称;key:

INI文件中的关键字;def:

无法读取时候时候的缺省数值;retVal:

读取数值;size:

数值的大小;filePath:

INI文件的完整路径和名称。

  C#中读写INI文件的关键步骤和解决方法

  C#对INI文件进行写操作:

  //写入INI文件privatevoidbutton2_Click(objectsender,e){}stringFileName=;stringsection=;stringkey=;stringkeyValue=;WritePrivateProfileString(section,key,keyValue,FileName);("成功写入INI文件!

","信息");

  对INI文件进行写操作,是通过组件button2的"Click"事件来实现的。

这里有一点应该注意,当在调用WritePrivateProfileString()对INI文件进行写操作的时候,如果此时在INI文件中存在和要写入的信息相同的段落名称和关键字,则将覆盖此INI信息。

下面是button2组件的"Click"事件对应的代码清单:

  C#对INI文件进行读操作:

  正确读取INI的必须满足三个前提:

INI文件的全路径、段落名称和关键字名称。

否则就无法正确读取。

你可以设定读取不成功后的缺省数值,在下面的程序中,为了直观设定的是“无法读取对应数值!

”字符串,读取INI文件是通过button3组件的“Click”事件来实现的,下面是其对应的代码清单:

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1