Bem vindo ao LifeGames Demo
Cadastre-se agora para ter acesso a todos os nossos recursos. Uma vez cadastrado e logado, você será capaz de criar tópicos, postar respostas a tópicos já existentes, a reputação de seus companheiros, começar seu próprio mensageiro privado, atualizações de status post, gerir o seu perfil e muito mais. Esta mensagem será removida assim que tiver logado.
Entrar Cadastre-se


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

Moedas Moedas : 278
Mensagens Mensagens : 1177
Idade Idade : 19
Humor Humor : Forever Alone T.T
Reputação Reputação : 28
Quebra de regras:
0 / 1000 / 100

RodrigoNunes

Admin

Admin

Olá galera, nesse ótimo tópico irei ensinar a como criar um programa parecido com o Winrar, que serve para descompactar arquivos .rar . Não será tão perfeito como o winrar mas será legal aprender como funciona o processo de descompactação.

Primeiro devemos baixar um componente para nosso delphi, o DFUnRAR. Clique aqui para baixar
descomprima o arquivo em um diretório qualquer

entre no diretório "src" e abra o arquivo "DFUnRAR.pas"

vá até Component > Install Compoenent
[Você precisa estar registrado e conectado para ver esta imagem.]

Clique na aba "Into New Package"

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
1 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"

Deixe seu Form assim:
[Você precisa estar registrado e conectado para ver esta imagem.]

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

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

IsExtracting: Boolean;
Abort: Boolean;


no evento OnCreate do Form1 adicione:

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

e no envento OnDestroy:

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

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

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:

Código:
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:
Código:

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

e no evento onclick do SpeedButton2 adicione:

Código:
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:


Código:

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

Créditos: BuGFiX




[Você precisa estar registrado e conectado para ver esta imagem.]
O Administrador ℛodrigoNunes sugere:
- Respeite as [Você precisa estar registrado e conectado para ver este link.]
- Participe das nossas [Você precisa estar registrado e conectado para ver este link.]
- Veja a nosso [Você precisa estar registrado e conectado para ver este link.]
- Não peça suporte por MP


Try
Topic.Resolve;
Finally
Topic.Caption := Topic.Caption + '[RESOLVIDO]';
Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário https://www.facebook.com/DarkGamesBrasil formatacaodemicros@hotmail.com.br naotenho esqueci

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum