Click here to Skip to main content
Click here to Skip to main content
Go to top

Easy storing application properties in an INI file

, 27 Nov 2006
Rate this:
Please Sign up or sign in to vote.
An article about CProperties, a helper class to easily store application properties in an INI file.

Screenshot of notepad with some ini properties

Introduction

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:

#include "Properties.h"
extern CProperties prop;

Then add this line to the main application CPP file (myapp.cpp, for example) under the line "CMyApp theApp;":

CProperties prop;

Adding data to the INI file is easy. Just add a public member of type CString, int, or double to the header of CProperties (properties.h) and then add a line like the following in the constructor of CProperties (properties.cpp):

class CProperties  
{
public:
    CString m_serverIp;
     ...    
    
    
CProperties::CProperties()
{
    m_proplist.push_back( 
      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.

void MyFunction()
{
    CString server = prop.m_serverIp;       // Get value
    
    prop.m_serverIp = "10.0.0.1";           // Store value
}

Dependency

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.

History

  • 1.0 | 27 Nov 2006 | Initial version.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Dennis Kuppens
Web Developer
Netherlands Netherlands
No Biography provided

Comments and Discussions

 
GeneralForward in using CIniFile class PinmemberRaymond_Gimilio30-Apr-08 3:44 
GeneralA very bad surprise PinmemberRaymond_Gimilio3-Apr-08 3:26 
GeneralRe: A very bad surprise PinmemberDennis Kuppens10-Apr-08 2:39 
GeneralIt helps me to understand the dot-init files management PinmemberRaymond_Gimilio2-Apr-08 21:11 
QuestionNot Unicode Ready? Pinmembergunmin11-Feb-07 11:42 
QuestionThe first and the last time point of data accessibility PinmemberAxcell29-Jan-07 1:23 
AnswerRe: The first and the last time point of data accessibility PinmemberDennis Kuppens31-Jan-07 20:20 
GeneralWhoever Rated This a "1" Should Be Ashamed PinmemberMike O'Neill4-Dec-06 15:04 
GeneralRe: Whoever Rated This a "1" Should Be Ashamed PinmemberDennis Kuppens4-Dec-06 22:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140905.1 | Last Updated 27 Nov 2006
Article Copyright 2006 by Dennis Kuppens
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid