BuGFiX 0 Denunciar post Postado Maio 31, 2008 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 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, 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 :) 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: 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. link código fonte deste aplicativo e o programa compilado MUITO BEM COMENTADO http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://www.delphinsi...emplo_unrar.rar Créditos: BuGFiX http://forum.imasters.com.br/public/style_emoticons/default/clap.gif=) flw, Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Rauseo 0 Denunciar post Postado Março 8, 2009 Ola fiz os procedimentos do tutorial mas na hora que vou executar esta dando acess violation pode me dizer oq acontece??? Estou rodando aplicaçao no Vista "Access violation at address 012C476D in module 'unrar.dll'. Write of address 000036AC." o trecho do codigo segue abaixo procedure TFPrincipal.BitBtn12Click(Sender: TObject); var aplicacao :string; begin aplicacao := ExtractFilePath(ParamStr(0)); winrar.Directory := aplicacao + 'MODGS.rar'; winrar.FileName := aplicacao + 'MODGS.rar'; winrar.Password := 'GSCOMEX'; winrar.Extract; end; obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
DouglasP 1 Denunciar post Postado Outubro 3, 2009 Aqui tambem apresenta esse erro, saberiam dizer a solução ? grato. Compartilhar este post Link para o post Compartilhar em outros sites
DouglasP 1 Denunciar post Postado Outubro 3, 2009 Resolvi, esse erro se da a compressao incorreta do arquivo, se você compactar ele usando o proprio winrar não dara erro. Compartilhar este post Link para o post Compartilhar em outros sites
Gui.Waltricke 0 Denunciar post Postado Janeiro 7, 2010 boa tarde gostaria de saber se esse sistema também pode ajudar para fazer um auto update onde baixa o arquivo .rar e substitui na pasta de onde foi baixado Olá, aqui no Delphi 2010 não está funcionando para adicionar o componente não veio arquivos DCU nem BPL alguem poderia me falar se há outra maneira de adicioanar ele Obrigado --------- EDIT Link pra download do exemplo pronto está offline também! Compartilhar este post Link para o post Compartilhar em outros sites