Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Fundindo arquivos ao executável


Surfistinha£
 Compartilhar

Posts Recomendados

Fundindo Arquivos ao Executável

 

Um recurso muito interessante que a ferramenta Delphi possibilita aos desenvolvedores é a de embutir arquivos (de diversas extenções) ao executável gerado.

 

Esta técnica consiste em gerar um "Arquivo de Recurso" (.RES), o qual será referenciado no código fonte através de uma diretiva de programação, que orienta o compilador a já anexar ao executável o arquivo escolhido, lembrando que para que o arquivo escolhido seja embutido no executável, antes será necessário "transformá-lo" num arquivo ".RES" através de um compilador da Borland que roda em modo MS-DOS, e que é encontrado no diretório "BIN" do caminho onde foi instalado o Delphi.

 

 

 

Vamos à prática:

 

 

 

* Transformação de um arquivo para ser utilizado pelo Delphi

 

 

 

 

 

Para o nosso exemplo vamos utilizar um arquivo de extenção .JPG, o qual neste exemplo

vamos chamar de IMAGEM.JPG, conforme segue abaixo:

 

 

 

- Através do MS-DOS, localize o caminho do arquivo “.JPG”, neste exemplo: "c:\recurso";

 

 

 

- Crie um Arquivo Texto no formato “.RC” no mesmo diretório onde se encontra a imagem, e

inclua a linha abaixo:

 

IMAGEMJPG JPGFILE C:\RECURSO\IMAGEM.JPG (o primeiro parâmetro indica o rótulo para o

nosso arquivo de imagem que iremos utilizar posteriormente em nossa implementação, o

segundo indica o tipo de arquivo que será passado ao compilador para a geração do

arquivo .RES, e o terceiro indica o caminho para o arquivo que será buscado pelo compilador);

 

- Como já foi citado, o compilador que usaremos estará no diretório BIN gerado na instalação do

Delphi, todavia, será necessário que o nosso arquivo “.RC” esteja no mesmo diretório deste

compilador (ou vice e versa). Podemos neste caso utilizar o comando PATH do MS-DOS para

criar um ponteiro que apontará para o executável do compilador (lembrando que ainda estamos

no diretório "C:\RECURSO"). Desta forma, utilize "PATH C:\ARQUIVOS DE

PROGRAMA\...\DELPHI?\BIN", e em seguida execute o compilador passando como parâmetro

a nossa imagem: "BRCC32 IMAGEM.JPG". Note que foi gerado um arquivo “.RES” em nosso

diretório.

 

Agora que já temos nosso aquivo ”.RES” que pode enfim ser interpretado pelo compilador do

Delphi, vamos às implementações:

 

- Crie uma nova aplicação no delphi, e no Arquivo de Projeto ".DPR", logo abaixo da diretiva de

programação {$R *.res}, inclua: {$R IMAGEM.RES};

 

- Pronto, assim que o nosso projeto for compilado, já teremos a nossa imagem fundida ao

executável.

 

* Extraindo o arquivo do executável

 

Para o nosso exemplo, estaremos extraindo o arquivo de imagem assim que o programa for

executado, porisso, todas as implementações serão feitas no nosso Arquivo de Projeto. Para

tanto, criaremos um Procedimento que será responsável por esta operação. Conforme abaixo:

 

Procedure Extrai_imagem;

Var PathToSave : String;

Res : TResourceStream;//Classe específica do Delphi

//para manipulação de recursos

Begin

PathToSave := 'C:\RECURSO\IMAGEM.JPG'; //Caminho para extração

If not FileExists(PathToSave) Then

Begin

Res := TResourceStream.Create(Hinstance, 'IMAGEMJPG', 'JPGFILE');

//extrai a imagem e armazena na memória caso não exista

Try

Res.SavetoFile(PathToSave);//Salva imagem no caminho especificado

Finally

Res.Free;

End;

End;

End;

 

Pronto, nossa imagem será plenamente extraída para o caminho especificado para a

variável "PathToSave". Vejamos então como ficaria o nosso código fonte:

 

program recurso;

uses

Forms, Windows, Sysutils, dialogs, classes,

Unit1 in 'Unit1.pas' {Form1};

 

 

{$R *.res}

{$R IMAGEM.RES}

 

 

Procedure Extrai_imagem;

Var PathToSave : String;

Res : TResourceStream;

Begin

PathToSave := 'C:\RECURSO\IMAGEM.JPG';

If not FileExists(PathToSave) Then

Begin

Res := TResourceStream.Create(Hinstance, 'IMAGEMJPG', 'JPGFILE');

Try

Res.SavetoFile(PathToSave);

Finally

Res.Free;

End;

End;

End;

 

 

begin

 

ShowMessage('Extraindo o arquivo IMAGEM.JPG');

Extrai_imagem;

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

 

É claro que este é apenas um exemplo simples de fusão e extração de arquivo de um executável, mas é base para uma gama enorme de idéias para a utilização no seu projeto, por exemplo, pense que você poderia aproveitar este recurso para anexar DLL's e Aquivos Texto de configuração e parâmetros para o seu sistema.

 

 

Espero ter colaborado!

 

-(Wiliam Zacarias) -

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.