C++ Builder XE8 安卓开发之使用ini文件保存数据

开发安卓时,我们有时候需要保存应用程序的配置信息,以方便下次打开APP时不需要重新配置。阿秀我之前总结了一篇使用Memo控件保存数据的方法,可惜只能针对Memo,不能保存其他控件比如Edit的配置信息。下面内容我总结了另一种保存数据的方法——ini文件。


INI文件一种通用的配置文件格式,它像注册表一样分键和数据项。下面是后面例程INI配置文件的内容,它有一个键Config,在这个键下有一个数据项Data,在数据项后面就是这个数据项的值123。



[Config]
Data=123



TIniFile类有几个常用的方法:

1、TIniFile

__fastcall TIniFile(const AnsiString FileName)::Inifiles::TCustomIniFile(FileName) {}

这个方法创建一个INI对象,如果FileName指定的文件名不存在则自动生成此文件,FileName可以用全路径,指定INI文件的地点。


2、SectionExists
bool __fastcall SectionExists(const AnsiString Section);
这个方法判断是否存在Section这个键。


3、ReadString
virtual AnsiString __fastcall ReadString(const AnsiString Section, const AnsiString Ident, const AnsiString Default);
这个方法从INI文件中读取一个字符串,Section是指定的键,Ident是指定键下的数据项,Default是如果这个项不存在的时候的默认值。


4、WriteString
virtual void __fastcall WriteString(const AnsiString Section, const AnsiString Ident, const AnsiString Value);
这个方法是向INI文件中写入一个字符串,Senction是指定的键,Ident是指定的数据项,Value是要写入的数据。
当然,TIniFile类也可以读取整型、布尔型,二进制等数据类型,摸索一下就知道了,用法也一样



例程(已通过编译并下载到手机上验证)

//---------------------------------------------------------------------------

#include <fmx.h>
#pragma hdrstop

#include "Unit2.h"

#include <System.IOUtils.hpp>   //文件路径信息,想保存到SD卡或使用TPath类必须包含该头文件
#include <System.inifiles.hpp>  //ini文件的头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//保存按钮
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	TIniFile * regKey= new TIniFile (System::Ioutils::TPath::GetTempPath() + "/Config.ini");    //创建一个INI对象,如果指定的文件名不存在则自动生成此文件
	regKey->WriteString ( "Config", "Data" , Memo1->Text );     //向INI文件中写入一个字符串
	ShowMessage(L"已经保存到" + System::Ioutils::TPath::GetTempPath() + "/Config.ini" + L"文件下");
	delete regKey;
}
//---------------------------------------------------------------------------
//读取按钮
void __fastcall TForm2::Button2Click(TObject *Sender)
{
	TIniFile * regKey= new TIniFile (System::Ioutils::TPath::GetTempPath() + "/Config.ini");
	Memo1->Text = regKey->ReadString ( "Config", "Data" , "123" );//从INI文件中读取一个字符串。
	ShowMessage(L"从" + System::Ioutils::TPath::GetTempPath() + "/Config.ini" + L"文件读取数据");
	delete regKey;
}
//---------------------------------------------------------------------------


总结

使用INI文件保存配置信息是很方便的,它最大的优点就是用户可以手工去就改它,它通常用来保存一些不是至关重要的数据。它的缺点就是不适合保存结构比较复杂的数据,而且文件容易被破坏。


你可能感兴趣的:(C++,安卓,ini,保存数据,BCB)