viernes, 6 de febrero de 2015

Ficheros INI en .NET

Actualmente suelen utilizarse para almacenar configuraciones archivos XML o incluso JSON, pero existen ciertos escenarios en los que nos encontramos que debemos trabajar con ficheros .ini. Un fichero ini es un fichero de texto en el que almacenar configuraciones, que pueden ir incluidas dentro de grupo. Mejor verlo con un ejemplo:
[BaseDatos]
; Base de datos
BD_Servidor=TuServidorSQL
BD_Nombre=NombreDeTuBBDD
BD_SegIntegrada=Si
BD_Usu=
BD_Clave=
El fichero anterior crear un grupo, BaseDatos, para incluir dentro configuraciones relativas a la misma. Un fichero ini puede contener tantos grupos como sean necesarios.

Para trabajar con ficheros ini desde .NET, basta con definir en nuestro proyecto una clase como la siguiente:
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Ini
{
  /// <summary>
  /// Create a New INI file to store or load data
  /// </summary>
  public class IniFile
  {
    public string path;

    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

    /// <summary>
    /// INIFile Constructor.
    /// </summary>
    /// <PARAM name="INIPath"></PARAM>
    public IniFile(string INIPath)
    {
      path = INIPath;
    }

    /// <summary>
    /// Write Data to the INI File
    /// </summary>
    /// <PARAM name="Section"></PARAM>
    /// Section name
    /// <PARAM name="Key"></PARAM>
    /// Key Name
    /// <PARAM name="Value"></PARAM>
    /// Value Name
    public void IniWriteValue(string Section, string Key, string Value)
    {
      WritePrivateProfileString(Section, Key, Value, this.path);
    }

    /// <summary>
    /// Read Data Value From the Ini File
    /// </summary>
    /// <PARAM name="Section"></PARAM>
    /// <PARAM name="Key"></PARAM>
    /// <PARAM name="Path"></PARAM>
    /// <returns></returns>
    public string IniReadValue(string Section, string Key)
    {
      StringBuilder temp = new StringBuilder(255);
      int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.path);
      return temp.ToString();
    }

  }
}
Su uso podría ser como sigue:
IniFile ini = new IniFile(Application.StartupPath + @"\config.ini");

Globales.bbdd_servidor = ini.IniReadValue("BaseDatos", "Servidor");
Globales.bbdd_nombre = ini.IniReadValue("BaseDatos", "Nombre");
Globales.bbdd_seguridadIntegrada = (ini.IniReadValue("BaseDatos", "SeguridadIntegrada").ToUpper()=="SI")?true:false;
Globales.bbdd_usuario = ini.IniReadValue("BaseDatos", "Usuario");
Globales.bbdd_clave = ini.IniReadValue("BaseDatos", "Clave");
Es todo.

0 comentarios :

Publicar un comentario

 

Copyright @ 2015 Tosblama