Colocar arquivo como recurso dentro do EXE no Delphi
Inclua na seção uses: Classes
Existem alguns casos em que precisamos levar para a máquina do usuário, além do EXE, alguns arquivos sem os quais nossa aplicação teria problema. Normalmente estes casos incluem: - arquivos com imagem (bmp, jpeg, gif, etc); - arquivos de fontes (TTF); - bibliotecas (dll); - e outros. A partir desta dica você saberá como incluir tais arquivos dentro do próprio EXE. Dentro do EXE podemos colocar qualquer tipo de arquivo que se comportará como um recurso. Vamos aos passos. 1. Crie um arquivo texto com o nome ARQ_RECURSO.RC e escreva neste arquivo a linha abaixo: NOME_DO_RECURSO RCDATA "c:\diretorio\arquivo.ext" 2. Compile este arquivo de recurso com o programa BRCC32.EXE: BRCC32 ARQ_RECURSO.RC 3. Confira se foi criado um arquivo chamado ARQ_RECURSO.RES. 4. Abra um novo projeto no Delphi. 5. Salve o projeto no mesmo diretório de ARQ_RECURSO.RES. 5. Escreve a linha abaixo após a palavra implementation {$R ARQ_RECURSO.RES} 6. Escreva o evento OnCreate do form como abaixo: procedure TForm1.FormCreate(Sender: TObject); var Stream: TResourceStream; begin Stream := TResourceStream.Create(hInstance, 'NOME_DO_RECURSO', RT_RCDATA); try Stream.SaveToFile('c:\diretorio\arquivo_extraido.ext'); finally Stream.Free; end; end; Pronto! Muito fácil! Vamos agora entender os passos citados. Primeiro criamos um script (arquivo .rc) para gerar o arquivo de recurso (.res). No script informamos o nome do recurso, o tipo e o conteúdo. O conteúdo, neste caso, foi o arquivo "c:\diretorio\arquivo.ext". Depois compilamos o script com o compilador de recursos da Borland (BRCC32.EXE). Este processo gerou o arquivo ARQ_RECURSO.RES. A seguir colocamos no código-fonte uma instrução para que o compilador do Delphi incluísse o arquivo de recurso (.res) no executável - {$R ARQ_RECURSO.RES}. No evento OnCreate do form acessamos o recurso como um Stream e o salvamos em arquivo no disco.
Para incluir um arquivo de fonte no EXE e instalar a fonte na máquina do usuário na primeira vez que o programa for executado, combine este dica com a dica número 12.