CIniFile

Environment: VC++ 6.0 All Windows

I had to build an application that uses an ini file. When looking in CodeGuru I found Adam Clauss' class CIniFile. The problem was that it wasn't very intuitive to work with, so I took his idea of the Sections struct and improved it. I'm using the API functions GetPrivateProfileSectionNames, GetPrivateProfileSection, WritePrivateProfileSection, and WritePrivateProfileString. I believe this class is easier to use.

The class has this functions divided by groups and is very easy to use after creating the object call Open( "c:\MyProjects\test.ini") or by calling SetPath("c:\MyProjects\test.ini") call Open(). After that it is straightforward. You should note that unless you set DoNotWrite(), when you change something in the ini file the class will write the contents.

// operation on the sections and keys
int DeleteSection( CString strsectionname);
int DeleteKey( CString sectionname,
               CString delkey);
int AddSection( CString sectionname);
int AddSection( CStringArray mKeys,
                CStringArray mValues,
                CString sectionname);
void AddKey( CString sectionname,
             CString keyname,
             CString value);

// operations on the ini file
void SetPath( CString path);
BOOL Open( CString path);
BOOL Open();
BOOL Write();
void Reset();
void Close();
void DoNotWrite();

// getters
CString GetKeyValue( CString sctionname,
                     CString keyname);
int GetSection( CStringArray &mKeys,
                CStringArray &mValues,
                CString sectionname);
CString GetSection( int sectionIndex);
int GetSetionsSize(){return Sections.GetSize();}
int GetKeysSize( CString sectionname);

// setters
int SetKeyValue( CString sectionname,
                 CString keyname,
                 CString value);

Downloads

Download source - 4 Kb