本人初学C++ Builder不就,也算是做个学习总结吧!
下面给所以下如何读取配置文档。
1. 假设我们在一个名为 temp的文件夹下建立一个BCB工程,其中有 一个名字为 setup.ini (.TXT或者其他格式的文本文档都行)的配置文档,其内容为:
//内容
[CfgIni]
AutoRun=1
AutoClose =0
[StrIni]
StringName = Hello
//end
2. 现在我们用C++ Builder读取其中的内容,并依照内容作相应的动作。
1)我们在窗口上放上两个按钮 Button1和Button2 ,再放一个文本框Memo1.
2)快速双击窗口,在窗口创建事件中加入代码
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear();
Edit1->Text = "";
AnsiString BasePath = GetCurrentDir(); //获取当前路径
TIniFile *ini = new TIniFile(BasePath + "\\Setup.ini"); //加载配置文档到内存
CfgIniFile.AutoClose = ini->ReadInteger("CfgIni","AutoClose",8); //读文档数字 //没读到,自动赋值为8
CfgIniFile.AutoRun = ini->ReadInteger("CfgIni","AutoRun",9); //读文档数字 //没读到,自动赋值为9
CfgIniFile.StringName =ini->ReadString("StrIni","StringName","NO"); //读文档字符 //没读到,自动赋值为"NO"
delete ini;
if(9 == CfgIniFile.AutoRun)
Memo1->Lines->Add("没有读到AutoRun的值");
if(8 == CfgIniFile.AutoClose)
Memo1->Lines->Add("没有读到AutoClose的值");
if(0 == CfgIniFile.StringName.AnsiCompare("NO") )
Memo1->Lines->Add("没有读到StringName的值");
if(1 == CfgIniFile.AutoRun)
{
Button1->Click();
Memo1->Lines->Add("自动运行");
}
else
Memo1->Lines->Add("手动运行");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = "点击了Button1按钮";
if(0 == CfgIniFile.StringName.AnsiCompare("Start") )
{
Memo1->Lines->Add("String=="+CfgIniFile.StringName);
}
if(1 == CfgIniFile.AutoClose)
{
Button2->Click();
ShowMessage("即将自动关闭");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
/头文件//
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "IniFiles.hpp"
//---------------------------------------------------------------------------
typedef struct
{
int AutoRun;
int AutoClose;
AnsiString StringName;
}INI;
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1;
TButton *Button1;
TButton *Button2;
TEdit *Edit1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
INI CfgIniFile;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif