Embarcadero

Autor Tema: Tutorial (como usar un archivo INI) Novatos  (Leído 5344 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Tutorial (como usar un archivo INI) Novatos
« Topic Start: 13 de septiembre de 2011, 21:26:49 »
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]procedure TForm1.FormCreate(Sender: TObject);
Var
MiArchivoINI : TiniFile; // crea una variable de tipo TIniFile
Begin
// Crea el archivo INI en la direccion del programa
MiArchivoINI  := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
// Escribe dentro del archivo creado
MiArchivoINI.WriteString( '1', 'A', '' );
end;
[/delphi]
Tened en cuenta que hay que colocar en el uses el tipo Tinifile, asi:

[delphi]uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles;[/delphi]

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í:





Creo que esta parte no necesita mucha explicación, si queréis aportar, con gusto. 
Seguimos........
Saludos
« Última Modificación: 14 de septiembre de 2011, 13:24:20 por Caral »

Follow members gave a thank to your post:


Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: Tutorial (como usar un archivo INI) Novatos
« Respuesta #1: 13 de septiembre de 2011, 21:30:31 »
  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:



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

Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: Tutorial (como usar un archivo INI) Novatos
« Respuesta #2: 13 de septiembre de 2011, 21:57:01 »
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]Close;[/delphi]
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]
var
B: TIniFile; // contiene el dato de tipo TIniFile
Codigo: String;
Tipo: String;
Dato: String;
begin
  Codigo:= Edit1.Text;  //Obtiene el dato del edit1
  Tipo:= ComboBox1.Text;  //Obtiene el dato del combobox1
  Dato:= Edit2.Text; //Obtiene el dato del edit2
  B := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MiArchivo.Ini'); // busca el archivo INI en el directorio del programa
  with B do
  begin
  B.WriteString(Codigo,Tipo,Dato); // Escribe los datos en el archivo ini
  Showmessage('Dato Guardado'); // muestra un mensaje
[/delphi]
Ahora el botón: Ver los datos Según el código:
Crearemos las variable para almacenar los datos:
[delphi]var
BF: TIniFile;
Codigo: String;
A, B, C: String;
begin
  Codigo:= Edit1.Text;
  BF := TIniFile.Create(ExtractFilePath(ParamStr(0)) +'MiArchivo.Ini');
  with BF do
  begin
  A := BF.ReadString(Codigo,'Nombre','');
  B := BF.ReadString(Codigo,'Apellido','');
  C := BF.ReadString(Codigo,'DNI','');
  Memo1.Clear;
  Memo1.Lines.Add('Nombre  = '+A);
  Memo1.Lines.Add('Apellido = '+B);
  Memo1.Lines.Add('DNI       = '+C);
  end;
[/delphi]
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]
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles;   [/delphi]



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
« Última Modificación: 14 de septiembre de 2011, 13:27:12 por Caral »

Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: Tutorial (como usar un archivo INI) Novatos
« Respuesta #3: 13 de septiembre de 2011, 22:16:59 »
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
 
« Última Modificación: 14 de septiembre de 2011, 09:59:56 por enecumene »

Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: Tutorial (como usar un archivo INI) Novatos
« Respuesta #4: 13 de septiembre de 2011, 22:43:22 »
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]uses
  SysUtils, Classes, DB, ADODB, IniFiles, Forms, Dialogs;[/delphi]
Colocad este código (en el evento Oncreate):
[delphi]Var
BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
    If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB:Database Password=admin';
     AdoConnection1.ConnectionString := ConStr;
     AdoConnection1.Open;
[/delphi]
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:
Cita
[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




Desconectado Caral

  • Administrador
  • ******
  • Thank You
  • -Given: 225
  • -Receive: 321
  • Mensajes: 3,507
  • Calificaciones: +364/-4
  • Sexo: Masculino
  • Siempre Novato
Re: Tutorial (como usar un archivo INI) Novatos
« Respuesta #5: 13 de septiembre de 2011, 23:06:52 »
Seguimos...
Conectarnos a Firebird..
Para esto usaremos los componentes IBX.
Igual que en ejemplo anterior pondremos este código en el evento OnCreate:
[delphi]Var BaseDeDatos, User, Pass : String;
    IniFile: TIniFile;

begin
   IBDatabase1.Connected:= False;
   IBTransaction1.Active:= False;
   // Obtiene la ruta y el nombre de la base de datos
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'MiArchivo.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   User:= IniFile.ReadString('US','Name','');
   Pass:= IniFile.ReadString('PS','Clave','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   IBDatabase1.DatabaseName:= BasedeDatos;
   IBDatabase1.Params.Clear;
   IBDatabase1.Params.Add('user_name='+User);
   IBDatabase1.Params.Add('password='+Pass);
   IBDatabase1.Params.Add('sql_role_name=3');
   IBDatabase1.Connected:= True;
   IBTransaction1.Active:= True;[/delphi]
Como veis:
Sector BD, dato Path
Sector US, Dato Name
Sector PS, dato Clave.
Ahora en archivo INI:
Cita
[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

Follow members gave a thank to your post: