Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.
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) -
wiliamzacarias@delphi.eti.br
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009