Como incorporar arquivos de recursos em executáveis no Delphi

Facilitar e agilizar a distribuição e implantação de sistemas é essencial para qualquer desenvolvedor. Veja neste artigo como embutir dentro do arquivo executável de seus aplicativos, arquivos secundários necessários, como modelos de relatórios.

Fique por dentro
Este artigo é útil em diversos tipos de aplicações que necessitam periodicamente de mudanças, seja para correção de erros, melhorias, ou adequações.

Para estes casos, utiliza-se alguns recursos, entre eles o de distribuir com a aplicação outro executável. Isto permite verificar se há mudanças a realizar, validar a versão do software entre outras.

Essas aplicações e diversas outras, utilizam essa técnica de incluir outros arquivos, músicas, imagens, cursores personalizados, arquivos de texto e outros executáveis “embutidos” no executável principal. Em Delphi podemos fazer isso utilizando recursos.

Durante o desenvolvimento de um software podemos fazer uso de DLLs, criar modelos de documentos e tudo isso precisa ser instalado junto com nosso software.

Para facilitar uma implantação ou atualização, podemos incluir esses arquivos, ou como são chamados, recursos, dentro de nosso executável e no momento de sua execução, extraí-los.

Vídeo, som, imagem ou qualquer arquivo binário, por exemplo, pode ser facilmente incorporado a um executável feito em Delphi através do uso da diretiva de recursos (RES - Resource).

É muito importante olhar com cuidado o uso dessa técnica, porque esses arquivos de recurso podem até dobrar o tamanho do executável. Também podemos fazer uso de outras possibilidades, como uso de pacotes BPL ou bibliotecas DLL dependendo da necessidade do projeto.

Estes recursos são parte do arquivo executável e são carregados ao mesmo tempo em que a aplicação é executada. O seu carregamento e descarregamento são realizados pela memória livre. Então não há um limite de números de recursos a serem carregados ou descarregados.

Arquivos de script de recurso (.rc)

Um arquivo de script de recursos nada mais é que um arquivo de texto simples com a extensão .rc. Este arquivo é compilado por uma ferramenta, para então gerar o arquivo res.

Para isso, geralmente utilizamos a Borland Resource Compiler com a finalidade de criá-lo (res). A estrutura de um arquivo rc para incorporar arquivos é composta basicamente por três características, sendo elas:

· Nome do recurso - Uma identificação para o recurso a ser usado pelo executável. Para criar esse nome, pode-se adotar qualquer caractere, inclusive números de 0 a 9. Só não são permitidos caracteres especiais (^, %, #, @, !, ~, *, &) e nem qualquer tipo de acentuação.

· Tipo do recurso - Para identificar o tipo do recurso, ou seja, o tipo do arquivo que está sendo incorporado. Já existem alguns tipos de recursos predefinidos como o Bitmap, Icon, Cursor e etc. Para outros tipos de arquivos como executáveis, pode-se definir o tipo File.

· Caminho para o recurso – Local onde se encontra o arquivo que se deseja utilizar como recurso. O diretório deve estar entre os caracteres de aspa dupla, ou será emitido um erro na hora de compilar o arquivo.

Internacionalizando a aplicação com o script de recurso

Além do que já foi citado até aqui, é possível também internacionalizar a aplicação com um arquivo de recurso. Para isso deve-se declarar no arquivo de recurso uma tabela de Strings (String Table).

Nessa tabela de Strings inserimos todos os textos para fazer a internacionalização. Existem outras maneiras de se internacionalizar um projeto desenvolvido em Delphi.

Além deste, os mais comuns são: o uso de DLLs, ResourceString e usando banco de dados para armazenamento dos textos. No entanto, se o projeto não for muito grande e não conter muitas telas e objetos, torna-se vantajoso fazer o uso do Resource para essa internacionalização, visto que um arquivo de Resource, com poucas Strings, não pesaria em nada a aplicação, sendo o tamanho insignificante.

Uma forma simples de fazer uma tabela de Strings para esse propósito seria colocar os textos dos objetos com uma quebra de linha entre as línguas.

A estrutura de uma String Table é relativamente simples, composta por um identificador e a String em si. Veja a seguir na "

[...] continue lendo...

Artigos relacionados