FT-Forum
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Tutorial] Extraindo arquivos RAR com seu programa

Ir para baixo

Tutorial [Tutorial] Extraindo arquivos RAR com seu programa

Mensagem por Psy Sáb Nov 10, 2012 9:20 pm


Extraindo arquivos RAR



Primeiro baixe o componente DFUnRAR no seguinte Link



http://www.rarlab.com/rar/TDFUnRar.zip



descomprima o arquivo em um diretório qualquer



vá até o diretório "src" e abra o arquivo "DFUnRAR.pas"



vá até Component > Install Compoenent

Imagem postada



Clique na aba "Into New Package"



Imagem postada



Clique em OK e depois responda "Yes" na mensagem que irá aparecer



Pronto! O Componente será instalado e a aba "DFrisch" aparecerá no Delphi





Crie um novo projeto no Delphi



Adicione 3 Label, 2 Button,2 SpeedButton, 1 OpenDialog, 2 Edit, um Gauge que fica na aba "Samples"

e por fim o componente DFUnRAR (na aba DFrisch)



Agora mude algumas propriedades....



Label1.Caption = "Arquivo:"
Label2.Caption = "Extrair para:"
Label3.Caption = "Progresso:"

Button1.Caption = "Extrair"
Button2.Caption = "Cancelar Extração"

SpeedButton1.Caption = "..."
SpeedButton2.Caption = "..."
SpeedButton1.Flat = "True"
SpeedButton2.Flat = "True"

OpenDialog1.Filer = "Arquivos RAR|*.rar"


Organize os componentes desta maneira (ou de qualque jeito se você quiser <img src=">



Imagem postada



Adicione a unit "untUnRAR" e a unit QDialogs que tem uma função util para nós

( tanto tempo sem mexer com delphi que não lembro + como escolher diretórios manualmente <img src=">



Declare na seção Public do Form1 as variáveis



IsExtracting: Boolean;

Abort: Boolean;





no evento OnCreate do Form1 adicione:



procedure TForm1.FormCreate(Sender: TObject);
begin
LoadRarLibrary();
end;




e no envento OnDestroy:



procedure TForm1.FormCreate(Sender: TObject);
begin
UnLoadRarLibrary();
end;




no evento onclick do Button1 adicione o seguite código:



procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled:=False;
Button2.Enabled:=True;
SpeedButton1.Enabled:=False;
SpeedButton2.Enabled:=False;
Gauge1.Progress:=Gauge1.MinValue;
with Edit2 do
if Text <> '' then DFUnRAR1.Directory:=Text;
DFUnRar1.FileName := Edit1.Text;
if not FileExists(DFUnRar1.FileName) then begin
 
ShowMessage('Este arquivo não existe!'+#13#10+
 
'Você deve digitar o nome de um arquivo');
 
Exit;
 
end
 
else begin
 isExtracting
:=True;
 
DFUnRar1.Extract;

 isExtracting
:=False;
if not Abort then ShowMessage('Extração Competa!');
 
Button1.Enabled:=True;
 
Button2.Enabled:=False;
 
SpeedButton1.Enabled:=True;
 
SpeedButton2.Enabled:=True;
 
end;
end;




no evento onclick do Button2 adicione:



procedure TForm1.Button2Click(Sender: TObject);
begin
DFUnRAR1.StopProcessing:=True;
Abort:=True;
ShowMessage('Extração cancelada pelo usuário!');
Gauge1.Progress:=Gauge1.MinValue;
end;




no envento onclick do SpeedButton1 adicione:



procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
 
Edit1.Text := OpenDialog1.FileName;
end;




e no evento onclick do SpeedButton2 adicione:


procedure TForm1.SpeedButton2Click(Sender: TObject);
var
dir
: widestring;
begin
// função da unit QDialogs seleciona um diretório
if SelectDirectory('Selecione um diretório','',dir ) then
 
Edit2.Text:=dir+'\';
end;




mude a propriedade CanProgress do DFUnRAR1 para True e adicione o seguinte codigo ao evento onprogress do componente DFUnRAR1:



procedure TForm1.DFUnRar1Progress(Sender: TObject; FilesProcessed,
 
FileCount, SizeProcessed, SizeCount: Cardinal);
begin
if (FileCount > 0) and (isExtracting) then
 
begin
 
Gauge1.Progress:=FilesProcessed * 100 div FileCount;
 
Application.ProcessMessages;
 
end;
end;




Copie a dll "UnRAR.dll" para o diretório do seu aplicativo!!

se a dll não estiver lá o programa não funciona!!!




Pronto! Agora seu programa já pode extrair arquivos RAR. Por enquanto este programa extrai todos os arquivo comprimidos dentro do RAR

mas com alguns melhoramentos ele pode extrair arquivos individuais



PS: não comentei o código aqui porque ia ficar uma confusão.

Psy
Psy
Administrador
Administrador

Posts Posts : 35
Localização : Em frente do PC

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos