Using INI Files/es

From Free Pascal wiki

العربية (ar) Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)

Archivos INI

Información Básica

   Los archivos INI se pueden utilizar para guardar la configuración básica del usuario con facilidad. Con la unidad INIfiles y la clase TINIFile puedes trabajar fácilmente con los archivos INI. Esta unidad forma parte de la FCL.

Archivos INI

   Los archivos INI utilizan corchetes para incluir secciones. En estas secciones se encuentran las claves y los valores de las claves.

   La clave y su valor están separados mediante el símbolo (=) .

   Los nombres de sección se escriben entre corchetes ([UnaSeccion]).

   En los archivos INI, se permiten los comentarios y deben estar marcados por punto y coma (;) al inicio de la línea. Como no hay un estándar definido, se permiten otros caracteres como (#).

   En estos días, los archivos INI no son tan populares como los archivos XML, debido a que no manejan muy bien grandes cadenas de texto, sin embargo, archivos similares a los INI, son usados comunmente en configuraciones Linux/Unix.

   Un ejemplo de archivo INI:

 ; Comment. Beginning of INI file

 ; empty lines are ignored

 ; note that no section has been defined.
 Compiler=Delphi
 ; Key: Compiler
 ; Value: Delphi

 [General]
 ; This starts a General section
 Compiler=FreePascal
 ; Key Compiler and value FreePascal

Ejemplo

   Crearemos una sencilla aplicación de consola. Lo primero que hará es crear un archivo INI y llamado DB.ini y lo pondrá en el directorio de la aplicación. Contendrá una sección llamada INIDB, y las claves y valores siguientes:

 Autor=Adam
 Contrasenya=
 ArchivoDB=Dinero.dat

   Veremos ahora el código:

 Program Proyecto1;
 {$mode objfpc}{$H+}
 Uses
  Classes,SysUtils,INIFiles;
 Var
  INI:TINIFile;
  Autor,Contrasenya,ArchivoDB:String;
  DameContrasenya:String;
 begin
  INI := TINIFile.Create('DB.ini');
  Autor := INI.ReadString('INIdb','Autor','');
  Contrasenya := INI.ReadString('INIdb','Contrasenya','');
  ArchivoDB := INI.ReadString('INIdb','ArchivoDB','');
  if Contrasenya <> '' then
  begin
    Writeln('Contraseña Requerida');
    Repeat
      Readln(DameContrasenya);
      if not DameContrasenya = Contrasenya then Writeln('Contraseña no válida');
    until(DameContrasenya = Contrasenya);
    Writeln('Contraseña correcta');
  end;
  Writeln('Autor : '+ Autor);
  Writeln('Archivo : '+ ArchivoDB);
  Writeln('Contraseña : '+ Contrasenya);
  Readln;
 end.

Lectura de archivos INI

   Para la lectura de los valores de los archivos INI, existen funciones específicas, de acuerdo al tipo de datos: ReadString, ReadBool, ReadInteger, ReadDate o ReadDateTime.

   Cada una de estas funciones devolverá, el tipo de datos correspondiente. Así por ejemplo 'ReadBool' devolverá valores 'boolean', y 'ReadString' devolverá un string.

   La lectura, se hace invocando a la función necesaria, y asignando el valor a una variable:

Cadena := INIdb.ReadString('Nombre de Sección','Clave','valor por defecto');

   El último parámetro, es el valor que se debe devolver, en caso de que la clave solicitada no exista en el archivo INI.

   Para leer una seción completa, se puede usar el método ReadSection. En este caso, se le debe pasar una lista de cadenas, como parámetro de salida.

   También puede resultar conveniente verificar si una sección existe. Para ello, se debe usar la función SectionExists.

Operaciones adicionales

   En la clase TINIFile hay diferentes propiedades, procedimientos y funciones que se pueden utilizar.

  • CaseSensitive - Esta característica le permite determinar si las claves y secciones distinguen entre mayúsculas y minúsculas o no, por omisión no hay distinción.
  • ReadString - Tiene tres parámetros constantes, el primero es la sección en la que buscar, el segundo es la clave buscada. El tercero es una cadena con el valor por omisión en caso de no encontrar la clave o la sección buscadas.
  • WriteString tiene también tres parámetros. El primero es la sección. El segundo es la clave y el último es el valor. Si la clave y la sección que ya existen la clave será escrita con el nuevo valor.
  • ReadSections - Permite obtener las secciones del archivo INI y las deposita en una clase TStrings (o TStringList usando la cláusula AS)
  • DeleteKey - Eliminar una clave existente de una sección específica.
  • EraseSection - Elimina una sección y todos los datos que contiene.

   Hay más procedimientos y funciones, pero esto es lo básico.

Palabra finales...

   Aquí [1] se puede conocer todo acerca de los archivos INI... Por favor, si tienes más información acerca de los archivos INI en Pascal. 'Modificar a voluntad.'

Ver también