Skip to main content
Email Password   helpLost your password?

Introduction

This class (IniHandler) permits Ini file access. The class represents the contents of the ini, and has functions to list, add, remove and rename categories (they would rather be sections, but ... whatever), and can list, create, delete, and modify key-value pairs. The class has static methods to read and write files.

Using the code

The only class is the IniHandler class in which everything is implemented. It does not write every change directly to the file. You rather get all data, then modify it, and at last save it.

The first part handles all the structure:

All data is saved in one System.Collections.SortedList which contains the category names as keys, and all key-value pairs as values, saved as SortedLists too. So this means there are SortedLists in a SortedList. That behaves like an array in an array, but with dynamic bounds and strings as indexers.

I hope you did understand this, it would have been easier to explain in French or German. You can of course list all categories, and all keys in a specified category. When you want to modify or read a value, you need to specify the categoryname and the keyname only.

This code is all you need to write an ini:

IniStructure Ini = new IniStructure();
Ini.AddCategory("NewSection");
Ini.AddValue("NewSection","NewKey","value");
Ini.ModifyValue("NewSection","NewKey","Newvalue");
IniStructure.WriteIni(Ini,"c:\filename.ini","Optional \n multiline \n comment");

The ini c:\filename.ini would then contain:

# Optional
# multiline
# comment

[NewSection]
NewKey=NewValue

Each time you write, the file is cleared and rewritten from scratch.

To read an ini, it's very similar:

IniStructure Ini = IniStructure.ReadIni("C:\filename.ini");
string[] allCategories = Ini.GetCategories();

// if Global would be a category, this lists all keys:

string[] keysInGlobal = Ini.GetKeys("Global");
 
// and if testkey would be a key in Global:

string testKeyValue = Ini.GetValue("Global","testkey");

There are also methods to list the categories and the key-value pairs by index, but they are only used to iterate through all categories and keys during saving.

Points of Interest

It's the first time I use SortedLists, and first tried to write this without them, but I'm happy that I found them because it makes the code a lot simpler. There are some things to do, like error handling: because most methods only return bool, you can only know if an error occurred, but no more. Things like incorrect names (no '=', '[', ']' ... in category names etc..) are handled, but that's all. There's sure room for improvement, but, that's always the case, isn't it?

History

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
GeneralDeleteCategory doesn't work to me Pin
cH40z-Lord
3:22 9 Oct '07  
GeneralNini Pin
Mattman206
12:37 1 Aug '06  
Generalencoding problem. Pin
margiex
17:17 27 Feb '06  
GeneralSorting Pin
Cemeron
12:39 31 Jan '06  
GeneralTiny bugfix Pin
Rolf Therkildsen
21:37 16 Aug '05  
GeneralAnother version without SortedList??? Pin
WayneC
23:05 3 May '05  
Generaldownload error Pin
Barraq
2:09 31 Jul '04  
GeneralRe: download error Pin
kratchkov
21:38 1 Aug '04  
GeneralImprovement Pin
Alex Rovner
14:22 29 Jul '04  
GeneralRe: Improvement Pin
kratchkov
21:38 1 Aug '04  
GeneralRe: Improvement Pin
Alex Rovner
6:34 2 Aug '04  
GeneralRe: Improvement Pin
kratchkov
9:56 4 Aug '04  
GeneralRe: Improvement Pin
quintonviljoen
20:38 22 Dec '04  
GeneralRe: Improvement Pin
AndyYerg
9:24 1 Mar '07  
Generalsmall mistake Pin
Filip Geens
23:00 7 Jul '04  
GeneralRe: small mistake Pin
lokeshdeshmukh
0:33 16 Jun '08  
GeneralForm Pin
Filip Geens
22:41 7 Jul '04  
GeneralRe: Form Pin
kratchkov
11:10 8 Jul '04  


Last Updated 2 Jun 2004 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009