Lazarus Resources/es

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) 한국어 (ko) русский (ru)

   Los archivos de recursos contienen información que debe ser compilada en el archivo exe. Esos datos pueden ser imágenes, tablas de cadenas, la información de versión, ... incluso un manifiesto Windows XP y formularios. Con ello se incluyen datos que el programador puede recuperar en su código (acceso a los mismos como si fuesen archivos). El uso de recursos puede ser útil si quiere distribuir ejecutables autónomos .

En las versiones previas a la 2.4 de FPC no era posible utilizar los recursos "normales", archivos de recursos (*. res), en Lazarus, ya que son específicos de win32. Si queremos utilizar los recursos de todos modos, tendremos que volver a crearlos con lazres. Lazres se encuentra en el directorio de herramientas de la carpeta de instalación de Lazarus (tal vez antes haya que compilarlo).

   Ahora ya podemos compilar archivos de recursos de Lazarus (*.lrs) desde la línea de ordenes. La sintaxis para lazres es:

lazres <nombre del archivo de recursos> <archivo1 (archivo2 archivo3 ...)>

Por Ejemplo:

lazres mirecursolazarus.lrs un_icono.ico

   Para utilizar un archivo de recursos de Lazarus en tus proyectos incluye el archivo correspondiente con la directiva del compilador $I en la sección de inicio (initialization) de la unidad.

   Puedes acceder a los datos de los recursos con el método LoadFromLazarusResource de los objetos que contendrán los contenidos de los archivos. LoadFromLazarusResource necesita un parámetro de cadena que indica qué objeto debe ser cargado desde el archivo de recursos.

Ejemplo:

 ...
 procedure ejemploproc;
 var
   icono: TIcon;
 begin
   icono := TIcon.Create;
   icono.LoadFromLazarusResource('un_icono');
 end;

 initialization
   {$I mirecursolazarus.lrs}
 ...

   Mediante {$I mirecursolazarus.lrs} incluimos el archivo mirecursolazarus.lrs en la unidad compilada. En el procedimiento ejemploproc creamos la variable icono de tipo TIcon y cargamos en ella el objeto de nombre "un_icono" del archivo de recursos. El archivo que compiló en el archivo de recursos fue probablemente el de nombre un_icono.ico.

   Todas las clases que se derivan de TGraphic contienen el procedimiento LoadFromLazarusResource.

El archivo de recursos Lazarus del formulario

   Lazarus genera un archivo .lrs del archivo de formulario .lfm. Pero no lo hace de forma automática si no existe el archivo .lrs; en esta situación FPC dará al compilar un mensaje como este: ERROR: unidad001.pas(24,4) Fatal: Can't open include file "unidad001.lrs".

   Para solucionarlo podemos utilizar lazres: (LazarusDir)\tools\lazres unidad001.lrs unidad001.lfm. En linux: ~$ lazres unidad001.lrs unidad001.lfm.

   La forma más sencilla de rehacer un archivo .lrs es realizar un cambio trivial en el diseño del formulario, deshacerlo y guardar el formulario; así no necesitaremos recurrir a lazres. Vincent 09:47, 6 enero 2009 (CET)

Obtener los datos en bruto de un recurso lrs

   Puedes recuperar los datos de un recurso tal como se muestra en este código:

 uses ...LResources...;

 ...
 procedure TForm1.FormCreate(Sender: TObject);
 var
   r: TLResource;
   Datos: String;
 begin
   r:=LazarusResources.Find('archivoDatos1');
   if r=nil then raise Exception.Create('No existe el recurso archivoDatos1');
   Datos:=r.Value;
   ...procesar los datos...
 end;

Autores y Colaboradores

JayK 21:35, 4 Nov 2005 (CET)
Versión castellana por Iskraelectrica 11 de diciembre de 2009