Easy INI File Access

cIniFile Class Sample Application

The cIniFile class is an easy, self-contained way to get complete access to INI files. Although use of INI files is no longer recommended under Windows (you should use the registry instead - see my Registry class for an easy migration from this method of using Ini files to using the registry) they are ultra simple to use. They also make it simpler to ship your application.

The class allows you to create, enumerate and delete sections and keys within an INI file, without restriction. Enumerating keys and sections in an INI file is quite a handy technique, as it means you can create INI files with arbitrary sections and keys and interrogate them easily. See the cIniFile.cls code to see how you do it - its just a simple (but little known) mod to the VB API declaration for GetPrivateProfileString (thanks to Jonathan Hopkins for passing this information on).

Here is a brief summary of typical uses of the class:

To get Value from the Ini File

    With m_cIni 
        .Path = App.Path & "\TEST.INI" 
        .Section = "Options" 
        .Key = "SavePath" 
        .Default = App.Path 
        
        sSavePath = .Value 
        If Not (.Success) Then 
            MsgBox "Failed to get value.", vbInformation 
        End If 
    End If

To Write a Value to the Ini file

    With m_cIni 
        .Path = App.Path & "\TEST.INI" 
        .Section = "Options" 
        .Key = "SavePath" 
        .Default = App.Path 
        
        .Value = sSavePath 
        If Not (.Success) Then 
            MsgBox "Failed to save value.", vbInformation 
        End If 
    End If

To Get All the Sections within an Ini File

Dim sSections() As String 
Dim iSectionCount As Long 

    With m_cIni 
        .EnumerateAllSections sSections(), iSectionCount 
        For iSection = 1 To iSectionCount 
            lstIni.AddItem "[" & sSections(iSection) & "]" 
        Next iSection 
    End With 

To Get All the Keys within a section of an Ini File

Dim sKeys() As String 
Dim iKeycount As Long 

    .Section = "Options" 
    .EnumerateCurrentSection sKeys(), iKeycount 
    For iKey = 1 To iKeycount 
        .Key = sKeys(iKey) 
        Debug.Print .Key & "=" & .Value 
    Next iKey 

To Delete a Key from an INI file

    With m_cIni 
        .Path = App.Path & "\TEST.INI" 
        .Section = "Options" 
        .Key = "SavePath" 
        .DeleteKey 
        If Not (.Success) Then 
            MsgBox "Delete Key Failed.", vbInformation 
        End If 
    End With 

To Delete a Section from an INI file

    With m_cIni 
        .Path = App.Path & "\TEST.INI" 
        .Section = "Options" 
        .DeleteSection 
        If Not (.Success) Then 
            MsgBox "Delete Section Failed.", vbInformation 
        End If 
    End With