I mostly use INI files to store program settings. For this, I use a properties class very often. Lately, I optimized it a little bit and I thought that maybe somebody else could also benefit from this class.
The properties class reads the INI file when its object is created. When no INI file exists, it creates it in the same location as where the main application exe is located. The INI file is named the same as the main exe but with the .ini extension. When the object is destroyed, the destructor makes sure that the data is stored in the INI file.
The reason I use INI files more than the registry is because when I have to give support, it is easier for the end user to mail me the INI file with all the settings than have him look into the registry. Sometimes end users are able to make changes to the settings in the INI file themselves. Having users editing the registry is more dangerous than editing an INI file in my opinion.
Using the code
To use this class, you have to add these lines to the stdafx.h:
extern CProperties prop;
Then add this line to the main application CPP file (myapp.cpp, for example) under the line "
Adding data to the INI file is easy. Just add a public member of type
double to the header of
CProperties (properties.h) and then add a line like the following in the constructor of
t_props("Connection", "ServerIp", "127.0.0.1", &m_serverIp));
^ ^ ^ ^
key name ___|value name __|default val __| data member __|
To compile the properties class, add the properties.(cpp/h) and inifile.(cpp/h) files to your project.
To access a property from your source code, you can type something like this.
CString server = prop.m_serverIp;
prop.m_serverIp = "10.0.0.1"; }
The actual reading of the ini file is done by the
CIniFile class from Shane Hill and can also be found on the Codeproject website. A copy of the source is included in the zip file of this project.
- 1.0 | 27 Nov 2006 | Initial version.