"Oleg Subachev" <ol**@urvb.ru> wrote in message
news:Oy**************@TK2MSFTNGP04.phx.gbl...
Are there good classes to work with .INI-files from C# ?
Oleg Subachev
I had a legacy app I was converting and needed to be able to read ini files.
I created a little app state dll that I've been able to reuse. Here's the
main ini class that reads / writes to ini files. (Beware of word wrap!).
Robert
using System;
using System.Xml;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Text;
namespace SNCIT2.AppState
{
public class Ini
{
#region DllImports
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileIntA")]
static extern public int GetPrivateProfileInt(string sectionName,
string keyName, int defaultVal, string fileName);
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA",
SetLastError = true)]
static extern public int GetPrivateProfileString(string sectionName,
string keyName, string defaultVal, StringBuilder returnVal, int returnSize,
string fileName);
[DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileStringA")]
static extern public int WritePrivateProfileString(string sectionName,
string keyName, string keyVal, string fileName);
[DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileStringA")]
static extern public int DeleteKeyValue(string sectionName, string
keyName, string keyVal, string fileName);
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA")]
static extern public int GetINIKeys(string sectionName, string
keyName, string defaultVal, string returnVal, int returnSize, string
fileName);
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA")]
static extern public int GetINISections(string sectionName, string
keyName, string defaultVal, string returnVal, int returnSize, string
fileName);
#endregion
#region Class Variables
/************************************************** *********************/
/* VARIABLES
*/
/************************************************** *********************/
private struct myVarsStruct
{
public string iniFileName;
public string section;
}
private myVarsStruct myVars = new myVarsStruct();
#endregion
#region Properties
#region IniFileName
/************************************************** *********************/
/* PROPERTIES
*/
/************************************************** *********************/
///************************************************** **********************
/// <summary>
/// IniFileName
/// </summary>
/// <returns>
/// The property IniFileName returns a data type of string.
/// </returns>
/// <revisionhistory>
/// 3/29/2006 12:00:00 AM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public string IniFileName
{
get
{
return myVars.iniFileName;
}
set
{
myVars.iniFileName = value;
}
}
#endregion
#region Section
///************************************************** **********************
/// <summary>
/// Section
/// </summary>
/// <returns>
/// The property Section returns a data type of string.
/// </returns>
/// <revisionhistory>
/// 3/29/2006 12:00:00 AM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public string Section
{
get
{
return myVars.section;
}
set
{
myVars.section = value;
}
}
#endregion
#endregion
#region Public Methods
/************************************************** *********************/
/* METHODS
*/
/************************************************** *********************/
#region GetString
///************************************************** **********************
/// <summary>
/// GetString
/// </summary>
/// <returns>
/// The method GetString returns a data type of string.
/// </returns>
/// <param name="keyName">keyName a variable of type string</param>
/// <revisionhistory>
/// 3/29/2006 2:51:54 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public string GetString(string keyName)
{
string localSection;
string defaultVal = "";
localSection = myVars.section;
if (localSection.Length == 0)
{
localSection = "Default";
}
return GetString(localSection, keyName, defaultVal);
}
#endregion
#region GetString
///************************************************** **********************
/// <summary>
/// GetString
/// </summary>
/// <returns>
/// The method GetString returns a data type of string.
/// </returns>
/// <param name="keyName">keyName a variable of type string</param>
/// <param name="defaultVal">defaultVal a variable of type
string</param>
/// <revisionhistory>
/// 3/29/2006 2:51:50 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public string GetString(string keyName, string defaultVal)
{
string localSection;
localSection = myVars.section;
if (localSection.Length == 0)
{
localSection = "Default";
}
return GetString(localSection, keyName, defaultVal);
}
#endregion
#region GetString
///************************************************** **********************
/// <summary>
/// GetString
/// </summary>
/// <returns>
/// The method GetString returns a data type of string.
/// </returns>
/// <param name="section">section a variable of type string</param>
/// <param name="keyName">keyName a variable of type string</param>
/// <param name="defaultVal">defaultVal a variable of type
string</param>
/// <revisionhistory>
/// 3/29/2006 2:51:46 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public string GetString(string section, string keyName, string
defaultVal)
{
int apiReturn;
StringBuilder apiBuffer = new StringBuilder(256);
try
{
apiReturn = GetPrivateProfileString(section, keyName,
defaultVal, apiBuffer, apiBuffer.Capacity, myVars.iniFileName);
if (apiBuffer == null)
return "";
else
return apiBuffer.ToString();
}
catch (Exception e)
{
Debug.WriteLine("GetSettingStr - Error: " + e.ToString());
return "";
}
}
#endregion
#region GetInt
///************************************************** **********************
/// <summary>
/// GetInt
/// </summary>
/// <returns>
/// The method GetInt returns a data type of int.
/// </returns>
/// <param name="keyname">keyname a variable of type string</param>
/// <revisionhistory>
/// 3/29/2006 3:16:00 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public int GetInt(string keyname)
{
return Convert.ToInt32(this.GetString(keyname));
}
#endregion
#region GetInt
///************************************************** **********************
/// <summary>
/// GetInt
/// </summary>
/// <returns>
/// The method GetInt returns a data type of int.
/// </returns>
/// <param name="keyname">keyname a variable of type string</param>
/// <param name="defaultVal">defaultVal a variable of type int</param>
/// <revisionhistory>
/// 3/29/2006 3:17:07 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public int GetInt(string keyname, int defaultVal)
{
return Convert.ToInt32(GetString(keyname, defaultVal.ToString()));
}
#endregion
#region GetInt
///************************************************** **********************
/// <summary>
/// GetInt
/// </summary>
/// <returns>
/// The method GetInt returns a data type of int.
/// </returns>
/// <param name="section">section a variable of type string</param>
/// <param name="keyname">keyname a variable of type string</param>
/// <param name="defaultVal">defaultVal a variable of type int</param>
/// <revisionhistory>
/// 3/29/2006 3:18:45 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public int GetInt(string section, string keyname, int defaultVal)
{
return Convert.ToInt32(GetString(section, keyname,
defaultVal.ToString()));
}
#endregion
#region SaveString
///************************************************** **********************
/// <summary>
/// SaveString
/// </summary>
/// <returns>
/// The method SaveString returns a data type of void.
/// </returns>
/// <param name="keyName">keyName a variable of type string</param>
/// <param name="setting">setting a variable of type string</param>
/// <revisionhistory>
/// 3/29/2006 2:51:43 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public void SaveString(string keyName, string setting)
{
string localSection;
localSection = myVars.section;
if (localSection.Length == 0)
{
localSection = "Default";
}
SaveString(localSection, keyName, setting);
}
#endregion
#region SaveString
///************************************************** **********************
/// <summary>
/// SaveString
/// </summary>
/// <returns>
/// The method SaveString returns a data type of void.
/// </returns>
/// <param name="section">section a variable of type string</param>
/// <param name="keyName">keyName a variable of type string</param>
/// <param name="setting">setting a variable of type string</param>
/// <revisionhistory>
/// 3/29/2006 2:51:37 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public void SaveString(string section, string keyName, string setting)
{
int apiReturn;
try
{
apiReturn = WritePrivateProfileString(section, keyName, setting,
myVars.iniFileName);
}
catch (Exception e)
{
Debug.WriteLine("SaveSettingStr - Error: " + e.ToString());
}
}
#endregion
#region SaveInt
///************************************************** **********************
/// <summary>
/// SaveInt
/// </summary>
/// <returns>
/// The method SaveInt returns a data type of void.
/// </returns>
/// <param name="keyname">keyname a variable of type string</param>
/// <param name="setting">setting a variable of type int</param>
/// <revisionhistory>
/// 3/29/2006 3:21:58 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public void SaveInt(string keyname, int setting)
{
SaveString(keyname, setting.ToString());
}
#endregion
#region SaveInt
///************************************************** **********************
/// <summary>
/// SaveInt
/// </summary>
/// <returns>
/// The method SaveInt returns a data type of void.
/// </returns>
/// <param name="section">section a variable of type string</param>
/// <param name="keyname">keyname a variable of type string</param>
/// <param name="setting">setting a variable of type int</param>
/// <revisionhistory>
/// 3/29/2006 3:21:55 PM - Robert C. Cain - Created.
/// </revisionhistory>
///************************************************** **********************
public void SaveInt(string section, string keyname, int setting)
{
SaveString(section, keyname, setting.ToString());
}
#endregion
#endregion
#region Constructors
/************************************************** *********************/
/* CONSTRUCTORS
*/
/************************************************** *********************/
public Ini()
{
}
public Ini(string appName)
{
myVars.iniFileName = appName.Trim() + ".ini";
}
public Ini(string appName, string iniFile)
{
myVars.iniFileName = iniFile.Trim();
}
#endregion
}
}
----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----