Sign in Join
Wiki copytemporary

Using INI Files/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Archivos INI
22
33### Información Básica
44
55   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.
66
77### Archivos INI
88
99   Los archivos INI utilizan corchetes para incluir **secciones**. En estas secciones se encuentran las claves y los valores de las claves.
1010
1111   La clave y su valor están separados mediante el símbolo (=) .
1212
1313   Los nombres de sección se escriben entre corchetes (\[UnaSeccion\]).
1414
1515   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 (#).
1616
1717   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.
1818
1919   Un ejemplo de archivo INI:
2020
2121``` ini
2222 ; Comment. Beginning of INI file
2323
2424 ; empty lines are ignored
2525
2626 ; note that no section has been defined.
2727 Compiler=Delphi
2828 ; Key: Compiler
2929 ; Value: Delphi
3030
3131 [General]
3232 ; This starts a General section
3333 Compiler=FreePascal
3434 ; Key Compiler and value FreePascal
3535```
3636
3737### Ejemplo
3838
3939   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:
4040
41-` Autor=Adam`\
42-` Contrasenya=`\
43-` ArchivoDB=Dinero.dat`
41+```text
42+ Autor=Adam
43+ Contrasenya=
44+ ArchivoDB=Dinero.dat
45+```
4446
4547   Veremos ahora el código:
4648
4749``` pascal
4850 Program Proyecto1;
4951 {$mode objfpc}{$H+}
5052 Uses
5153 Classes,SysUtils,INIFiles;
5254 Var
5355 INI:TINIFile;
5456 Autor,Contrasenya,ArchivoDB:String;
5557 DameContrasenya:String;
5658 begin
5759 INI := TINIFile.Create('DB.ini');
5860 Autor := INI.ReadString('INIdb','Autor','');
5961 Contrasenya := INI.ReadString('INIdb','Contrasenya','');
6062 ArchivoDB := INI.ReadString('INIdb','ArchivoDB','');
6163 if Contrasenya <> '' then
6264 begin
6365 Writeln('Contraseña Requerida');
6466 Repeat
6567 Readln(DameContrasenya);
6668 if not DameContrasenya = Contrasenya then Writeln('Contraseña no válida');
6769 until(DameContrasenya = Contrasenya);
6870 Writeln('Contraseña correcta');
6971 end;
7072 Writeln('Autor : '+ Autor);
7173 Writeln('Archivo : '+ ArchivoDB);
7274 Writeln('Contraseña : '+ Contrasenya);
7375 Readln;
7476 end.
7577```
7678
7779### Lectura de archivos INI
7880
7981   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**.
8082
8183   Cada una de estas funciones devolverá, el tipo de datos correspondiente. Así por ejemplo 'ReadBool' devolverá valores 'boolean', y 'ReadString' devolverá un string.
8284
8385   La lectura, se hace invocando a la función necesaria, y asignando el valor a una variable:
8486
85-*`Cadena := INIdb.ReadString('Nombre de Sección','Clave','valor por defecto');`*
87+``` pascal
88+Cadena := INIdb.ReadString('Nombre de Sección','Clave','valor por defecto');
89+```
8690
8791   El último parámetro, es el valor que se debe devolver, en caso de que la clave solicitada no exista en el archivo INI.
8892
8993   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.
9094
9195   También puede resultar conveniente verificar si una sección existe. Para ello, se debe usar la función **SectionExists**.
9296
9397### Operaciones adicionales
9498
9599   En la clase TINIFile hay diferentes propiedades, procedimientos y funciones que se pueden utilizar.
96100
97101- **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.
98102- **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.
99103- **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.
100104- **ReadSections** - Permite obtener las secciones del archivo INI y las deposita en una clase TStrings (o TStringList usando la cláusula AS)
101105- **DeleteKey** - Eliminar una clave existente de una sección específica.
102106- **EraseSection** - Elimina una sección y todos los datos que contiene.
103107
104108   Hay más procedimientos y funciones, pero esto es lo básico.
105109
106110### Palabra finales...
107111
108112   Aquí [1](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html) 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*.'
109113
110114## Ver también
111115
112116- [[XML Tutorial/es|Tutoría XML]]
113117
114118---
115119*From the Free Pascal wiki, page "Using INI Files/es", as it stood on 2020-03-04 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history