Ir al contenido




Foto

Tutorial (como usar un archivo INI) Novatos


  • Por favor identifícate para responder
9 respuestas en este tema

#1 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 08:26

Hola
Con este pequeño Tutorial lo que pretendo es mostrar los conceptos básicos para el manejo de un archivo .ini.
En este veremos como crearlo, escribir en el y obtener la información escrita.
En la segunda parte veremos como usarlo para conectar una base de datos (access y Firebird).
Para empezar, según lo que entiendo, un archivo ini contiene la información por sectores (me podéis corregir  ).
Esta información se puede colocar de diferentes formas, la que conozco es:
Un sector principal y datos internos dentro de este.
No me hagáis mucho caso, es mejor ver como funciona, así lo entenderéis mejor.


En el primer ejemplo lo que vamos a hacer es aprender a:  crear un archivo INI
Para eso vamos a crear un nuevo proyecto y en el form creado, en el evento Oncreate vamos a poner:


delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. Var
  3. MiArchivoINI : TiniFile; // crea una variable de tipo TIniFile
  4. Begin
  5. // Crea el archivo INI en la direccion del programa
  6. MiArchivoINI  := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
  7. // Escribe dentro del archivo creado
  8. MiArchivoINI.WriteString( '1', 'A', '' );
  9. end;


Tened en cuenta que hay que colocar en el uses el tipo Tinifile, asi:



delphi
  1. uses
  2.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  3.   Dialogs, IniFiles;



Guardad el proyecto.
Si ejecutáis el programa veréis que en la carpeta en donde lo guardasteis se creara un archivo ini con el nombre MiArchivo.
Si lo abren veréis dentro de el algo así:


Imagen Enviada


Creo que esta parte no necesita mucha explicación, si queréis aportar, con gusto. 
Seguimos........
Saludos

  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 08:30

  Bien, Seguimos:


En este segundo ejemplo veremos como se escribe dentro de un archivo INI y como podemos obtener esa información.
Primero creemos un nuevo proyecto:
Flile New Application.
En el form creado vamos a poner:
2 Panel
3 botones
1 Combobox
1 memo
2 edit
3 label


Nos quedara asi:
Imagen Enviada


Como veis se hicieron estos cambios:
Al primer panel cambiadle el caption por: Datos de la persona
Al segundo panel dejad el caption en blanco
Los edits dejadlos en blanco en la propiedad TEXT.
En el combobox en la propiedad string poned:
Nombre
Apellido
DNI

Los Label serian: Código, Tipo, Dato.
Los botones:
Guardar los datos
Ver los datos según el código
Salir
Cambiemos le el caption del form a: Datos en Archivo INI.
Guardemos el proyecto.


Seguimos con código..........
Saludos
  • 0

#3 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 08:57

Seguimos:
Vamos a escribir el código que nos servirá para este ejemplo:
Primero el mas sencillo:
El boton Salir:
Dadle doble click y poned esto:


delphi
  1. Close;


El botón Guardar los datos:
Aquí vamos a crear algunas variables que nos servirán para almacenar los datos.
Este es el código:


delphi
  1. var
  2. B: TIniFile; // contiene el dato de tipo TIniFile
  3. Codigo: String;
  4. Tipo: String;
  5. Dato: String;
  6. begin
  7.   Codigo:= Edit1.Text;  //Obtiene el dato del edit1
  8.   Tipo:= ComboBox1.Text;  //Obtiene el dato del combobox1
  9.   Dato:= Edit2.Text; //Obtiene el dato del edit2
  10.   B := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MiArchivo.Ini'); // busca el archivo INI en el directorio del programa
  11.   with B do
  12.   begin
  13.   B.WriteString(Codigo,Tipo,Dato); // Escribe los datos en el archivo ini
  14.   Showmessage('Dato Guardado'); // muestra un mensaje


Ahora el botón: Ver los datos Según el código:
Crearemos las variable para almacenar los datos:


delphi
  1. var
  2. BF: TIniFile;
  3. Codigo: String;
  4. A, B, C: String;
  5. begin
  6.   Codigo:= Edit1.Text;
  7.   BF := TIniFile.Create(ExtractFilePath(ParamStr(0)) +'MiArchivo.Ini');
  8.   with BF do
  9.   begin
  10.   A := BF.ReadString(Codigo,'Nombre','');
  11.   B := BF.ReadString(Codigo,'Apellido','');
  12.   C := BF.ReadString(Codigo,'DNI','');
  13.   Memo1.Clear;
  14.   Memo1.Lines.Add('Nombre  = '+A);
  15.   Memo1.Lines.Add('Apellido = '+B);
  16.   Memo1.Lines.Add('DNI      = '+C);
  17.   end;


Como veis en este segundo botón se busca el archivo ini, se leen los datos con la función  ReadString y se muestran en el memo.


Acordaros que hay que declarar en tipo TInifile en el uses:


delphi
  1. uses
  2.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  3.   Dialogs, IniFiles; 





Corred el programa y empezad a jugar con datos, veréis que los guarda y los recupera según el dato que se escriba en el edit1 el cual sera el código de referencia.
Si tenéis alguna duda ya sabéis, para eso estamos..


Seguiré con la parte de conexión a las Bases de datos.
Saludos

  • 0

#4 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 09:16

Seguimos...

Como visteis anteriormente un archivo INI lee la información en un sector especifico dentro de el.
Esto es lo que usaremos para poder conectar una BD por medio de un archivo INI.
Una cosa a tomar en cuenta es que aunque los datos son del tipo Texto se puede usar con datos numéricos, eso tal vez lo veamos en otra ocasión por ahora nos enfocaremos al enlace con las BD.
Sabemos, según lo que pudimos ver que el dato de tipo ''control'' se encuentra encerrado dentro de corchetes [ ] y que los datos contenidos dentro del principal se definen con un signo de igual =.
En el caso de la conexión con una BD se puede desde colocar todos los datos necesarios, los básicos, las claves etc. etc. etc..
Lo normal es colocar solamente la dirección donde se encuentra la BD.
Aveces se necesita colocar la clave y el usuario, por lo menos yo lo prefiero en el caso de Firebird.
En el siguiente paso os mostrare tanto el código para access como para Firebird, como veréis serán prácticamente lo mismo con ligeras diferencias.
Seguimos.....
Saludos

  • 0

#5 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 09:43

Seguimos....
Conectarnos a una BD access por medio de un archivo INI.
Bien, en este caso usaremos los componentes ADO.
Este código lo podemos colocar en un form o en un datamodule (que es lo mas eficiente), siempre dentro del evento OnCreate.
Hay que recordar que en el uses del from hay que poner el uses IniFiles, en el caso de un datamodule:


delphi
  1. uses
  2.   SysUtils, Classes, DB, ADODB, IniFiles, Forms, Dialogs;


Colocad este código (en el evento Oncreate):


delphi
  1. Var
  2. BaseDeDatos, ConStr : String;
  3.     IniFile: TIniFile;
  4. begin
  5.   // Obtiene la ruta y el nombre de la base de datos
  6.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
  7.   BasedeDatos := IniFile.ReadString('BD','Path','');
  8.     If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  9.   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
  10.             'Data Source='+BaseDeDatos+';'+
  11.             'Persist Security Info=False;'+
  12.             'Jet OLEDB:Database Password=admin';
  13.     AdoConnection1.ConnectionString := ConStr;
  14.     AdoConnection1.Open;


Como veis el sector principal se llama BD este estará encerrado entre corchetes y el dato se sacara del sector Path que es donde se escribirá la dirección de la BD.
Bien, abrid el archivo INI y poned los datos para que sean leídos por el programa, tendrán que quedar de esta forma:

[BD]
Path="C:\MICarpeta\Micarpetadebd\MiBD.MDB"

Si colocáis en el sector Path la dirección de la carpeta donde esta la BD y el nombre de la BD entonces el programa la buscara y enlazara conectándola.


Bien, si tenéis dudas, preguntad.. (y)
Seguimos con la conexión a Firebird.....
Saludos




  • 0

#6 Caral

Caral

    Advanced Member

  • Administrador
  • 4.212 mensajes
  • LocationCosta Rica

Escrito 13 septiembre 2011 - 10:06

Seguimos...
Conectarnos a Firebird..
Para esto usaremos los componentes IBX.
Igual que en ejemplo anterior pondremos este código en el evento OnCreate:


delphi
  1. Var BaseDeDatos, User, Pass : String;
  2.     IniFile: TIniFile;
  3.  
  4. begin
  5.   IBDatabase1.Connected:= False;
  6.   IBTransaction1.Active:= False;
  7.   // Obtiene la ruta y el nombre de la base de datos
  8.   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
  9.   BasedeDatos := IniFile.ReadString('BD','Path','');
  10.   User:= IniFile.ReadString('US','Name','');
  11.   Pass:= IniFile.ReadString('PS','Clave','');
  12.   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
  13.   IBDatabase1.DatabaseName:= BasedeDatos;
  14.   IBDatabase1.Params.Clear;
  15.   IBDatabase1.Params.Add('user_name='+User);
  16.   IBDatabase1.Params.Add('password='+Pass);
  17.   IBDatabase1.Params.Add('sql_role_name=3');
  18.   IBDatabase1.Connected:= True;
  19.   IBTransaction1.Active:= True;


Como veis:
Sector BD, dato Path
Sector US, Dato Name
Sector PS, dato Clave.
Ahora en archivo INI:

[BD]
Path="localhost:C:\MiCarpeta\MiCarpetadeBD\MiBD.FDB"
[US]
Name="SYSDBA"
[PS]
Clave="masterkey"

En el caso de Firebird se puede poner la dirección IP.
Como siempre, si tenéis alguna duda, preguntad... (y)
Espero os sirvan estos sencillos ejemplos.
Saludos
  • 0

#7 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 581 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 04 junio 2014 - 01:28

gracias por la info.  (y)
  • 0

#8 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 332 mensajes

Escrito 20 julio 2014 - 06:26

El archivo .ini podria ser creado manualmente como un archivo de texto .txt por ejemplo y ser modificado manualmente, para que cuando una aplicacion se inicie, tome parametros?

Por ejemplo estoy desarrollando una aplicacion que se conecta a un webservice, y dentro de cada sucursal se coencta a otro(es uno por sucursal por si se corta internet), que por defecto tendran una ip y nombre de base de datos por ej.

Yo podria para poner en marcha el sistema crear un archivo ini y codificar la comprobacion del  mismo durante la inicializacion del programa, y que el ini contenga el nombre de la sucursal, el ip del servicio local y el ip del servicio global,etc y muchos otros datos.

Es verdad que los .ini son archivos txt de texto plano?

Saludos
  • 0

#9 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.547 mensajes
  • LocationArgentina

Escrito 20 julio 2014 - 07:37

El archivo .ini podria ser creado manualmente como un archivo de texto .txt por ejemplo y ser modificado manualmente, para que cuando una aplicacion se inicie, tome parametros?

Por ejemplo estoy desarrollando una aplicacion que se conecta a un webservice, y dentro de cada sucursal se coencta a otro(es uno por sucursal por si se corta internet), que por defecto tendran una ip y nombre de base de datos por ej.

Yo podria para poner en marcha el sistema crear un archivo ini y codificar la comprobacion del  mismo durante la inicializacion del programa, y que el ini contenga el nombre de la sucursal, el ip del servicio local y el ip del servicio global,etc y muchos otros datos.

Es verdad que los .ini son archivos txt de texto plano?

Saludos

Si, puedes crear un .ini con el simple y práctico Bloc de Notas por ejemplo. Solamente debes asegurarte de que al guardarlo le indiques la extensión .ini. Un archivo ini contiene una estructura como ésta:

[NOMBRE_SECCION1]
Variable1=valor
Variable2=Valor
...
VariableN=valor

[NOMBRE_SECCION2]
...

La sección permite agrupar las variables bajo una "categoría". Cada Variable viene acompañada de un valor que es el que se lee para la aplicación. Un ejemplo clásico:

[DB]
User=SYSDBA
Pass=masterkey
DatabaseName=MiBaseDatos.FDB
Path=C:/Program File/MiApp/DB/

Espero que se entienda.
Ahora en lo sucesivo, por favor evita postear tus dudas en los tutoriales y manuales. Si tienes una duda respecto a uno en particular inicia un hilo y comenta sobre que tutorial y manual tienes problemas. Esto está redactado en nuetras Sugerencias y Recomendaciones al postear que junto a las Normas hacen ayudan a mantener la casa en orden.
Muchas gracias.

Saludos,
  • 0
Como redactar mensajes - Uso de etiquetas

Se enseña por amor a los demás, se aprende por amor a la verdad
Cuanto más se busca la verdad, sin llegar a la perfección, anhelamos saber lo que falta

San Agustín


#10 Raymond J

Raymond J

    Member

  • Miembros
  • PipPip
  • 10 mensajes

Escrito 11 noviembre 2014 - 07:26

Muchas gracias por el tutorial para novatos, yo estoy empezando y me ha sido muy útil  (y)

  • 0