Aisha Ikram is a
senior software engineer and has been working mainly in VC++ 6, MFC,
ATL, COM. She now a days working on .NET framework and C#. She is also a member
of various developer's website like code project, code guru, mind cracker and
C# corner. You can write the author at
ais_ikr@yahoo.com
for your feedback concerns and problems.

Introduction
CIniReader is a class that reads/writes from/to an INI file. Here are
functions list of this class:
setINIFileName | Sets the INI File name to read and write.
|
getKeyValue | Used to retrieve a key value given the section and key name.
|
getSectionData | Used to retrieve all key/value pairs of a given section.
|
getSectionNames | Used to retrieve all the sections in an ini file |
sectionExists | Used to find out if a given section exists.
|
setKey | Used to modify the key value or to create a key value pair for the specified section.
|
The functions in CIniReader use GetPrivateProfilexxx () functions to set, get
information stored in an INI file. By having idea of the SDK functions like
GetPrivateProfilexxx (), the functionality of the class can easily be
extended.
Here is the CIniReader header file:
//
// CIniReader- Header File
//
class CIniReader
{
public:
// method to set INI file name, if not already specified
void setINIFileName(CString strINIFile);
// methods to return the lists of section data and section names
CStringList* getSectionData(CString strSection);
CStringList* getSectionNames();
// check if the section exists in the file
BOOL sectionExists(CString strSection);
// updates the key value, if key already exists,
// else creates a key-value
pair
long setKey(CString strValue, CString strKey, CString strSection);
// give the key value for the specified key of a section
CString getKeyValue(CString strKey,CString strSection);
// default constructor
CIniReader()
{
m_sectionList = new CStringList();
m_sectionDataList = new CStringList();
}
CIniReader(CString strFile)
{
m_strFileName = strFile;
m_sectionList = new CStringList();
m_sectionDataList = new CStringList();
}
~CIniReader()
{
delete m_sectionList;
delete m_sectionDataList;
}
private:
// lists to keep sections and section data
CStringList *m_sectionDataList;
CStringList *m_sectionList;
CString m_strSection;
long m_lRetValue;
// ini file name
CString m_strFileName;
};
How to use the class?
Demo project shows how to use the class.
It takes from the user the fully qualified path and name of the INI file as
"C:\WINDOWS\ODBC.INI" in the INI File name edit box. List Sections fills the
list of sections in the INI file. Specifying any of the section names, and clicking
the List Keys buttons will fill the second list box with the section data (all
key and value pairs). Specifying a key name and pressing the Show Key Value
button will display the value of the key. Update Key Value will update the
modified value from the key value edit box for the key. If key not already present,
update key value will create the specified key-value pair in the INI file. Be sure
what you are doing, as it will modify the keys and values of INI.
Currently the buffer limit is up to 2000 characters, which can be increased
according to the requirement.
After setting the INI file name just as the following code, you can proceed with
using CIniReader functions:
// example of using the setINIFileName method
CIniReader m_IniReader;
m_strINIFile = "C:\\WINDOWS\\ODBC.INI";
m_IniReader.setINIFileName (m_strINIFile);
That's it. The class is so simple and easy to use, I am sure you will have no problem.
Keep visiting the site for updated and new articles.
Sign my guest book OR send me your feedback at ais_ikr@yahoo.com