Como adicionar arquivos de recursos em executáveis ​​Delphi

Os jogos e outros tipos de aplicativos que usam arquivos multimídia como sons e animações devem distribua os arquivos multimídia extras junto com o aplicativo ou incorpore os arquivos no executável.

Em vez de distribuir arquivos separados para uso do seu aplicativo, você pode adicionar os dados brutos ao seu aplicativo como um recurso. Você pode recuperar os dados do seu aplicativo quando necessário. Essa técnica é geralmente mais desejável porque pode impedir que outras pessoas manipulem esses arquivos de suplemento.

Este artigo irá mostrar-lhe como incorporar (e usar) arquivos de som, videoclipes, animações e mais geralmente qualquer tipo de arquivo binário em um executável em Delphi. Para o propósito mais geral, você verá como colocar um Arquivo MP3 dentro de um Delphi Exe.

Arquivos de Recursos (.RES)

No "Arquivos de recursos simplificados", foram apresentados vários exemplos do uso de bitmaps, ícones e cursores de recursos. Conforme declarado nesse artigo, podemos usar o Editor de imagens para criar e editar recursos que consistem nesses tipos de arquivos. Agora, quando estivermos interessados ​​em armazenar vários tipos de arquivos (binários) dentro de um executável Delphi, teremos que lidar com arquivos de script de recursos (.rc), o

instagram viewer
Compilador de Recursos Borland ferramenta e outra.

A inclusão de vários arquivos binários no seu executável consiste em 5 etapas:

  1. Crie e / ou colete todos os arquivos que você deseja colocar em um exe.
  2. Crie um arquivo de script de recurso (.rc) que descreva os recursos usados ​​pelo seu aplicativo,
  3. Compile o arquivo de script de recurso (.rc) para criar um arquivo de recurso (.res),
  4. Vincule o arquivo de recurso compilado ao arquivo executável do aplicativo,
  5. Use o elemento de recurso individual.

O primeiro passo deve ser simples, basta decidir quais tipos de arquivos você gostaria de armazenar no seu executável. Por exemplo, armazenaremos duas músicas .wav, uma animações .ani e uma música .mp3.

Antes de prosseguirmos, aqui estão algumas declarações importantes sobre limitações ao trabalhar com recursos:

  • Carregar e descarregar recursos não é uma operação demorada. Os recursos fazem parte do arquivo executável do aplicativo e são carregados ao mesmo tempo em que o aplicativo é executado.
  • Toda a memória (livre) pode ser usada ao carregar / descarregar recursos. Em outras palavras, não há limites para o número de recursos carregados ao mesmo tempo.
  • Obviamente, os arquivos de recursos duplicam o tamanho de um executável. Se você deseja executáveis ​​menores, considere colocar recursos e partes do seu projeto em um biblioteca de vínculo dinâmico (DLL) ou é mais variação especializada.

Vamos agora ver como criar um arquivo que descreve recursos.

Criando um arquivo de script de recurso (.RC)

Um arquivo de script de recurso é apenas um arquivo de texto simples com a extensão .rc que lista os recursos. O arquivo de script está neste formato:

ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
...
ResNameX ResTYPEX ResFileNameX
...

RexName especifica um nome exclusivo ou um valor inteiro (ID) que identifica o recurso. ResType descreve o tipo de recurso e o ResFileName é o caminho completo e o nome do arquivo para o arquivo de recurso individual.

Para criar um novo arquivo de script de recurso, basta fazer o seguinte:

  1. Crie um novo arquivo de texto no diretório de projetos.
  2. Renomeie-o para AboutDelphi.rc.

No arquivo AboutDelphi.rc, tenha as seguintes linhas:

Relógio WAVE "c: \ mysounds \ projects \ clock.wav"
ONDA do MailBeep "c: \ windows \ media \ newmail.wav"
Legal AVI cool.avi
Introdução RCDATA introsong.mp3

O arquivo de script simplesmente define recursos. Seguindo o formato fornecido, o script AboutDelphi.rc lista dois arquivos .wav, uma animação .avi e uma música .mp3. Todas as instruções em um arquivo .rc associam um nome de identificação, tipo e nome de arquivo para um determinado recurso. Existem cerca de uma dúzia de tipos de recursos predefinidos. Isso inclui ícones, bitmaps, cursores, animações, músicas etc. O RCDATA define recursos de dados genéricos. O RCDATA permite incluir um recurso de dados brutos para um aplicativo. Os recursos de dados brutos permitem a inclusão de dados binários diretamente no arquivo executável. Por exemplo, a instrução RCDATA acima nomeia o recurso binário do aplicativo Intro e especifica o arquivo introsong.mp3, que contém a música para esse arquivo MP3.

Nota: verifique se você tem todos os recursos listados no seu arquivo .rc. Se os arquivos estiverem dentro do diretório de projetos, você não precisará incluir o nome completo do arquivo. No meu arquivo .rc, as músicas .wav estão localizadas * em algum lugar * do disco e a animação e a música MP3 estão localizadas no diretório do projeto.

Criando um arquivo de recurso (.RES)

Para usar os recursos definidos no arquivo de script de recursos, precisamos compilá-lo em um arquivo .res com o Compilador de Recursos da Borland. O compilador de recursos cria um novo arquivo com base no conteúdo do arquivo de script de recursos. Esse arquivo geralmente possui uma extensão .res. O vinculador Delphi posteriormente reformata o arquivo .res em um arquivo de objeto de recurso e o vincula ao arquivo executável de um aplicativo.

A ferramenta de linha de comando do Borland Resource Compiler está localizada no diretório Delphi Bin. O nome é BRCC32.exe. Simplesmente vá para o prompt de comando, digite brcc32 e pressione Enter. Como o diretório Delphi \ Bin está no seu Path, o compilador Brcc32 é chamado e exibe a ajuda de uso (já que foi chamado sem parâmetros).

Para compilar o arquivo AboutDelphi.rc em um arquivo .res, execute este comando no prompt de comando (no diretório de projetos):

BRCC32 SobreDelphi. RC

Por padrão, ao compilar recursos, o BRCC32 nomeia o arquivo de recurso compilado (.RES) com o nome base do arquivo .RC e o coloca no mesmo diretório que o arquivo .RC.

Você pode nomear o arquivo de recurso como desejar, desde que ele tenha a extensão ".RES" e o nome do arquivo sem a extensão não seja o mesmo que qualquer nome de arquivo de unidade ou projeto. Isso é importante porque, por padrão, cada projeto Delphi compilado em um aplicativo tem um arquivo de recurso com o mesmo nome que o arquivo do projeto, mas com a extensão .RES. É melhor salvar o arquivo no mesmo diretório que o arquivo do projeto.

Incluindo recursos (vinculando / incorporando) a executáveis

Depois que o arquivo .RES é vinculado ao arquivo executável, o aplicativo pode carregar seus recursos em tempo de execução, conforme necessário. Para realmente usar o recurso, você precisará fazer algumas chamadas à API do Windows.

Para seguir o artigo, você precisará de um novo projeto Delphi com um formulário em branco (o novo projeto padrão). É claro que adicione o {$ R AboutDelphi. RES} diretiva para a unidade do formulário principal. Finalmente chegou a hora de ver como usar recursos em um aplicativo Delphi. Como mencionado acima, para usar os recursos armazenados em um arquivo exe, precisamos lidar com a API. No entanto, vários métodos podem ser encontrados nos arquivos de ajuda do Delphi que são "recurso" ativado.

Por exemplo, dê uma olhada no LoadFromResourceName método de um objeto TBitmap. Este método extrai o recurso de bitmap especificado e o atribui ao objeto TBitmap. É exatamente isso que a chamada da API LoadBitmap faz. Como sempre, o Delphi melhorou uma chamada de função da API para atender melhor às suas necessidades.

Agora, adicione o componente TMediaPlayer a um formulário (nome: MediaPlayer1) e adicione um TButton (Button2). Deixe o evento OnClick parecer com:

Um pequeno problema * é que o aplicativo cria uma música MP3 em uma máquina do usuário. Você pode adicionar um código que exclua esse arquivo antes que o aplicativo seja encerrado.

Extraindo *???

Obviamente, todos os outros tipos de arquivos binários podem ser armazenados como um tipo RCDATA. O TRsourceStream foi projetado especialmente para nos ajudar a extrair esse arquivo de um executável. As possibilidades são infinitas: HTML em um exe, EXE em exe, banco de dados vazio em um exe e assim por diante.

instagram story viewer