Olá galera, nesta Quick Tip, irei mostrar uma integração com um dos mais conhecidos programas de compactação do mercado, o Winrar. Através do Help do mesmo, conseguimos fazer uma perfeita comunicação com ele a ponto de fazermos quase que um novo winrar, porém consumindo os recursos do mesmo, vou mostrar por aqui como Compactar e descompactar arquivos gerados com o Winrar, nesta primeira parte fazemos a descompactação e construção do Exemplo, e na parte seguinte a compactação finalizando assim o exemplo.

Inicialmente vamos construir uma aplicação da seguinte maneira. Vamos adicionar um Pagecontrol e duas abas.

Organize os componentes e mudo o name dos mesmos seguindo a ordem abaixo:

  • EdtCaminhoWinrar
  • BtnCaminhoWinrar
  • EdtArquivoOriginal
  • BtnArquivoOriginal
  • EdtDestino
  • BtnDestino
  • EdtExtensao
  • BtnDescompactar
  • OpenDialog1
Interface da aplicação

Figura 1: Interface da aplicação

Observação 1 : O Clique dos botões que representam uma pasta, tem um código simples, veja abaixo.

Observação 2 : Adicionar a unit uDescompactar à cláusula uses.

Listagem 1: Código do formulário

procedure TFrmPrincipal.BtnCaminhoWinrarClick(Sender: TObject);
begin
if OpenDialog1.Execute then
EdtCaminhoWinrar.Text := OpenDialog1.FileName;
end;
procedure TFrmPrincipal.BtnArquivoOriginalClick(Sender: TObject);
begin
if OpenDialog1.Execute then
EdtArquivoOriginal.Text := OpenDialog1.FileName;
end;
procedure TFrmPrincipal.BtnDestinoClick(Sender: TObject);
begin
if OpenDialog1.Execute then
EdtDestino.Text := OpenDialog1.FileName;
end;

Vamos agora criar uma Unit para descompactação dos arquivos, salve a mesma com o nome uDescompactar. Implementamos ela abaixo:

Listagem 2: Unit uDescompactar

unit uDescompactar;
interface
uses
Windows, Dialogs;
Type
TDescompactarWinrar = class
private
FExtensao: String;
FPathDestino: String;
FArquivoOriginal: String;
FPathInstalacao: String;
procedure SetArquivoOriginal(const Value: String);
procedure SetPathDestino(const Value: String);
procedure SetExtensao(const Value: String);
procedure SetPathInstalacao(const Value: String);
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property PathDestino : String read FPathDestino write SetPathDestino;
property Extensao : String read FExtensao write SetExtensao;
property ArquivoOriginal : String read FArquivoOriginal write SetArquivoOrigi
SetArquivoOriginal;
property PathInstalacao : String read FPathInstalacao write SetPathInstalacao;
procedure Descompactar;
end;
implementation
 
{ TDescompactarWinrar }
procedure TDescompactarWinrar.Descompactar;
Var
cmd : String;
begin
Cmd := PathInstalacao + ' x ' + ArquivoOriginal + ' ' + Extensao + ' ' + PathDe
PathDestino;
WinExec( PAnsiChar(AnsiString(Cmd)), SW_HIDE);
Showmessage('Arquivo descompactado com sucesso !!!');
end;
 
procedure TDescompactarWinrar.SetArquivoOriginal(const Value: String);
begin
FArquivoOriginal := Value;
end;
 
procedure TDescompactarWinrar.SetPathDestino(const Value: String);
begin
FPathDestino := Value;
end;
 
procedure TDescompactarWinrar.SetExtensao(const Value: String);
begin
FExtensao := Value;
end;
 
procedure TDescompactarWinrar.SetPathInstalacao(const Value: String);
begin
FPathInstalacao := Value;
end;
 
end.

Observação 3 : Nesta unit podemos observar o código da procedure descompactar, nela definimos o comando que o help do Winrar demonstra para descompactação.

Para finalizarmos a função do Clique do BtnDescompactar.

Listagem 3: Clique do botão BtnDescompactar

procedure TFrmPrincipal.BtnDescompactarClick(Sender: TObject);
Var
       DescompactarWinrar : TDescompactarWinrar;
begin
  Try
       DescompactarWinrar := TDescompactarWinrar.Create;
       with DescompactarWinrar do
       begin
              ArquivoOriginal := EdtArquivoOriginal.Text;
              Extensao := EdtExtensao.Text;
              PathDestino := EdtDestino.Text;
              PathInstalacao := EdtCaminhoWinrar.Text;
              Descompactar;
       end;
       Finally
         FreeAndNil(DescompactarWinrar);
       end;
end;

Fico por aqui ate a próxima Quick Tip, onde veremos a parte de Compactação dos arquivos.

Um abraço.