Archivos de recursos y de configuración en Delphi

Archivos de recursos y de configuración en Delphi
Información sobre la plantilla
Delphi.jpg

Archivos de recursos y de configuración en Delphi. La utilización de archivos de recursos, en el desarrollo de aplicaciones, permite generar ficheros ejecutables que contienen todos los recursos necesarios para su correcto funcionamiento sin necesidad de utilizar ficheros adicionales para suministrar los mismos en tiempo de ejecución evitando, al mismo tiempo, que usuarios indeseados puedan manipularlos. La utilización de archivos de configuración, en el desarrollo de aplicaciones, permite que cada usuario pueda configurar el programa de acuerdo a sus intereses y necesidades.

Generalidades

Toda aplicación desarrollada con Delphi parte de un proyecto que puede estar compuesto de uno o más formularios (ventanas a partir de las cuales se construyen los programas), módulos de código (cuya finalidad es almacenar código que posteriormente será usado desde otros puntos de la aplicación), archivos de recursos (ficheros que contienen otros elementos usados por la aplicación que formarán parte del ejecutable), y archivos de configuración (ficheros que contienen valores que se usan en la configuración del programa), entre otros.

Ficheros de configuración (Ficheros Ini)

Por ficheros Ini se entiende todo fichero que tiene extensión Ini, está en formato ASCII y tiene una estructura interior dividida en secciones. Dentro de cada sección hay valores que se usan en la configuración del programa que gestiona ese fichero. Los nombres de las secciones se indican entre corchetes, e inmediatamente van las variables con sus valores.

Los ficheros Ini se pueden abrir con el Bloc de Notas, aunque Windows, incluye un programa visor para ver los ficheros del sistema, que se llama SysEdit; si se ejecuta este programa se puede ver el contenido de los ficheros del sistema, entre ellos los de extensión Ini. Para trabajar con los ficheros Ini, Delphi consta de la Unit IniFiles donde están definidas todas las funciones y los procedimientos necesarios para poder leer y escribir en estos ficheros.

Create (FileName)                          Para acceder a un fichero
ReadSecTionValues (Sección, Tstring)       Lee todas las variables.
ReadSections (Tstring)                     Lee todas las secciones.
ReadSection (Tstring)                      Lee una sección
ReadString (Sección, Variable, Defecto)    Lee una variable de tipo cadena.
ReadInteger (Sección, Variable, Defecto)   Lee una variable de tipo entero
ReadBool (Sección, Variable, Defecto)      Lee una variable de tipo boleano
WriteString (Sección, Variable, Valor)     Escribe un valor de tipo cadena en una variable.
WriteInteger (Sección, Variable, Valor)    Escribe un valor de tipo entero en una variable.
WriteBool (Sección, Variable, Valor)       Escribe un valor de tipo boleano en una variable.

Ejemplo

Incluya IniFiles en la cláusula Uses del formulario.

Var
 MiFicheroIni : TIniFile;
begin
 Archivo:= ExtracFileDir (Paramstr (0) + ‘\Fichero.Ini’;
 MiFicheroIni:= TIniFile, Create (Archivo);
 Form1.Left:= MiFicheroIni.ReadInteger (‘Form’, ‘Left’, 0);
 Form1.Top:= MiFicheroIni.ReadInteger (‘Form’, ‘Top’, 0);
 Form1.Caption:= MiFicheroIni.ReadStribg (‘Form’, ‘Caption’, ‘Sin Título’);
 MiFicheroIni.Free;
end;

En el procedimiento genérico anterior (se puede poner dentro de cualquier procedimiento), se crea una variable de tipo IniFile (MiFicheroIni) que se inicializa en la segunda línea indicando que el fichero con el que se va a trabajar se llama Fichero.Ini y que se encuentra en el mismo directorio en que se encuentra la aplicación. En la primera línea se indica el nombre del fichero con la ruta completa ya que de no hacerlo se asume que este está en el directorio de Windows, y no donde se está ejecutando el programa. En la tercera y cuarta línea se le asigna a las propiedades Left y Top del primer formulario los valores de las variables del mismo nombre que se encuentran en la sección Form del fichero Ini. En la línea final se libera la variable creada, para que no ocupe memoria. Nota: Cuando el fichero no se encuentra, este es creado.

Ficheros de recursos (Ficheros Res)

Los archivos de recursos tienen extensión Res y contienen elementos de la aplicación que no son ni controles, ni código (imágenes de mapas de bits, sonidos, cursores, iconos, etc). En un archivo de recursos cada uno de los recursos existentes tiene asignado un identificador único que servirá posteriormente para referirnos a él en tiempo de ejecución. Para crear un archivo de recursos se necesita un editor de recursos que permita editar los recursos en formato ASCII, siendo necesario posteriormente realizar una compilación para obtener los mismos en formato Res.

Pasos para crear un archivo de recursos

1. Se crea un fichero en un Editor de textos (Bloc de Notas), por ejemplo:

Imagen     Bitmap     Dibujo.bmp`
Sonido     Wave       Musica.wav
Puntero    Cursor     Lápiz.cur
Icono      Icon       Bandera.ico

Nota: Separe una columna de la otra utilizando la tecla TAB.

2. Se grava con extensión RC, por ejemplo Recursos.rc 3. 3. Se compila el fichero creado, siguiendo los siguientes pasos:

  • Se ponen en el mismo directorio tanto las imágenes (Dibujo.bmp), sonidos (Musica.wav), cursores (Lápiz.cur) e iconos (Bandera.ico), como el fichero creado (recursos.rc).
  • Se activa el compilador BRC32 que se encuentra dentro del subdirectorio BIN del directorio de Delphi pasándole como parámetro el fichero creado (Recursos.rc).
BRC32.exe     Recursos.rc

con lo que se generará el archivo de recurso Recursos.res Para usar los recursos se que utilizan una serie de funciones especiales de Delphi.

Ejemplo

Incluya MMSystem en la cláusula Uses del formulario y agregue la directiva {$R Recursos.res} Coloque el siguiente código en el evento OnActivate del formulario

Conts
 MiCursor = 5;
begin
 PlaySound (PChar ('Sonido'), Hinstance, SND_Resource Or SND_ASYNC);
 Image1.Picture.Bitmap.Handle:= LoadBitmap (Hinstance, 'Imagen');
 Screen.Cursors [MiCursor]:= LoadCursor (Hinstance, 'Puntero');
 Screen.Cursor := MiCursor;
 Application.Icon.Handle:= LoadIcon (Hinstance, 'Icono');
end;

En el procedimiento anterior, con la instrucción de la primera línea se escuchará el sonido y sin esperar a que este termine se le asignará, en la segunda línea, la imagen al control Image1. En la tercera y cuarta línea se le asigna al puntero del mouse el cursor y en la quinta línea se le asigna el icono a la aplicación. Si se desea que se espere a que termine el sonido para cargar la imagen entonces se deberá cambiar la primera línea por:

PlaySound (PChar ('Sonido'), Hinstance, SND_Resource Or SND_SYNC);

Bibliografía

  • CHARTE OJEDA, FRANCISCO. Visual Basic 6. – Madrid : Ediciones Anaya Multimedia, 2002.— 542 p.
  • DÍAZ IGLESIAS, JACK. Delphi 5 Básico/ Jack Díaz Iglesias, Franklin Pérez González.-- La Habana : Ed. Pueblo y Educación, 2001.—294 p.

Fuente