/*==================================================================
=  文件名:CIniFile类定义文件                                       
=  主要功能:可以读取.修改变量数值,可以设置新的组,新的变量          
=  修改日期:2003-10-3                                             
=  作者: shen beide
====================================================================*/
#ifndef _CINIFILE_H_
#define _CINIFILE_H_

#include "PubHeader.h"

#include "ObArray.h"
#include "otstr.h"

//用户接口说明:
//1.Key不能出现下例定义：例如 ABC和ABCD，由于有重复串"ABC",系统将不能区分
//2.REMARK,代表注释

#ifdef _DLL_PROJECT
class CLASS_EXPORT CIniFile
#else
class CIniFile
#endif
{
public:
	CIniFile();
	virtual ~CIniFile();

    ////////////////////////////////////////////////////////
	bool Open(char* lpstrFileName,char* lpstrRemark="#");
	bool Close(bool bWriteBack=false);

	bool GetVarInt(char* strSection,char* strVarName,int & iValue,int iDefaultValue,bool bSetVar_when_NotExist=false);
	bool GetVarStr(char* strSection,char* strVarName,OTSTR &strReturnValue,char* lpDefaultStrValue,bool bSetVar_when_NotExist=false);

	bool SetVarInt(char*,char*,const int &);
	bool SetVarStr(char*,char*,char*);

	bool RemoveKey(char*,char*);
	
private:
	bool GetVar(char*,char*,OTSTR &);
	bool SetVar(char*,char*,char*);

	int  SearchSection(char* strSection);
	int  SearchKey(char*,char*);
	
private:
	OTSTR     m_strInIFileName;
	char      REMARK[20];
	
	ObArray   m_LineList;
};

#endif
