ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Descompactar .ZIP

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
r.alves
Membro Junior
Membro Junior


Registrado: Terça-Feira, 16 de Agosto de 2005
Mensagens: 376
Localização: Curitiba - PR

MensagemEnviada: Seg Ago 24, 2015 1:26 pm    Assunto: Descompactar .ZIP Responder com Citação

Senhores, fiz um aplicativo que baixa arquivos .zip mas agora preciso fazer com que cada arquivo baixado seja descompactado automaticamente, tentei usar o zlib mas pelo que eu li (e tentei também) ele descompacta apenas arquivos compactados por ele mesmo.

Alguém sabe algum componente ou tem alguma sugestão?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3046
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Ago 24, 2015 1:51 pm    Assunto: Responder com Citação

As novas versões do Delphi (creio que apartir do XE2) dá suporte a biblioteca Zip nativa (sem componentes).

Declare System.Zip ou apenas Zip na uses do form.

Compactar

Código:
function Zip(Files: TStrings; ZipName: String): boolean; // Compacta
os arquivos
var
  I: integer;
  Zipper: TZipFile;
begin
  Zipper := TZipFile.Create();
  try
    Zipper.Open(ZipName, zmWrite);
    for I := 0 to Files.Count - 1 do
    begin
      if FileExists(Files[I]) then
        Zipper.Add(Files[I]);
    end;
    Zipper.Close;
  finally
    FreeAndNil(Zipper);
  end;
  Result := True;
end;


Descompactar

Código:
function UnZip(ZipName: string; Destination: string): boolean; // Descompacta
no Diretorio informado
var
  UnZipper: TZipFile;
begin
  UnZipper := TZipFile.Create();
  try
    UnZipper.Open(ZipName, zmRead);
    UnZipper.ExtractAll(Destination);
    UnZipper.Close;
  finally
    FreeAndNil(UnZipper);
  end;
  Result := True;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
r.alves
Membro Junior
Membro Junior


Registrado: Terça-Feira, 16 de Agosto de 2005
Mensagens: 376
Localização: Curitiba - PR

MensagemEnviada: Seg Ago 24, 2015 2:02 pm    Assunto: Responder com Citação

Entendo, mas eu utilizo o delphi 7, teria como utilizar o "Zip" mesmo assim?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3046
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Ago 24, 2015 2:14 pm    Assunto: Responder com Citação

Creio que não, esta biblioteca foi acrescentada creio que apartir do Delphi XE2.

No Delphi 7, você precisa utilizar componentes de terceiros.

Veja alguns (não sei se são compatíveis com Delphi 7):

Abbrevia
http://tpabbrevia.sourceforge.net/
Mostly Pascal, with C .obj for zipx decompression (no redistributables).
Win32/Win64/OS X/Linux (Delphi, Free Pascal, Kylix). Open source.
Supports Zip64, .tar, .gz, .bz2, .cab. Also includes treeview/listview
components.

JclCompression.pas (JEDI Code Library)
http://sourceforge.net/projects/jcl/
Wraps 7-zip's 7za.dll. Win32 (and Win64?) only. Open source. Supports
many archive formats, including .7z and .rar. Supports Zip64 and AES
strong encryption.

SynZip
http://synopse.info/forum/viewtopic.php?pid=163
Pure Pascal and x86 assembly. Win32 only. Open source. Fast. Zip-only.

System.Zip.pas
Included with Delphi XE2. Pure Pascal, Win32/Win64/OS X. Fairly
limited implementation of basic zip format.

TSevenZipVCL
http://www.rg-software.de/rg/index.php?option=com_content&id=29
Wraps 7-zip's 7za.dll. Win32 only, Open source. Similar to
JclCompression.pas, but doesn't work with latest DLLs.

ZipBlackBox
http://eldos.com/sbb/desc-zip.php
Pure Pascal. Commercial. Supports Zip64 and AES strong encryption.
Excellent technical support. Win32/Win64, partial OS X.

ZipForge
http://componentace.com/zip_component_zip_delphi_zipforge.htm
Pure Pascal. Commercial. Supports Zip64 and AES strong encryption.
Win32 only.

ZipMaster
http://www.delphizip.org/
Wraps Info-Zip's C dll. Win32 only, open source. Similar idea to
JclCompression, but only supports zip archives.

ZipTV
http://www.ziptv.com/
Mostly Pascal, with C DLLs for some archive formats (.rar, .ace, .cab,
..7z). Win32 only. Commercial. Supports lots of different archive
formats and compression methods.

Veja este link:
http://embarcadero.newsgroups.archived.at/public.delphi.vcl.components.using/201201/1201148733.html
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
r.alves
Membro Junior
Membro Junior


Registrado: Terça-Feira, 16 de Agosto de 2005
Mensagens: 376
Localização: Curitiba - PR

MensagemEnviada: Seg Ago 24, 2015 2:15 pm    Assunto: Responder com Citação

Encontrei o ZipForge e resolveu o meu problema! http://www.componentace.com/unzip-in-delphi.htm
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
matteusin
Aprendiz
Aprendiz


Registrado: Terça-Feira, 28 de Fevereiro de 2012
Mensagens: 156

MensagemEnviada: Seg Ago 24, 2015 2:16 pm    Assunto: Responder com Citação

r.alves escreveu:
Entendo, mas eu utilizo o delphi 7, teria como utilizar o "Zip" mesmo assim?


Boa tarde!

Declare na uses: zLib.

Função:
Código:
procedure Descomprimir(ArquivoZip: TFileName; DiretorioDestino: string);
var
  NomeSaida: string;
  FileEntrada, FileOut: TFileStream;
  Descompressor: TDecompressionStream;
  NumArq, I, Len, Size: Integer;
  Fim: Byte;
begin
  FileEntrada := TFileStream.Create(ArquivoZip, fmOpenRead and fmShareExclusive);
  Descompressor := TDecompressionStream.Create(FileEntrada);
  Descompressor.Read(NumArq, SizeOf(Integer));
  try
    I := 0;
    while I < NumArq do begin
      Descompressor.Read(Len, SizeOf(Integer));
      SetLength(NomeSaida, Len);
      Descompressor.Read(NomeSaida[1], Len);
      Descompressor.Read(Size, SizeOf(Integer));
      FileOut := TFileStream.Create(
        IncludeTrailingBackslash(DiretorioDestino) + NomeSaida,
        fmCreate or fmShareExclusive);
      try
        FileOut.CopyFrom(Descompressor, Size);
      finally
        FileOut.Free;
      end;
      Descompressor.Read(Fim, SizeOf(Byte));
      Inc(I);
    end;
  finally
    FreeAndNil(Descompressor);
    FreeAndNil(FileEntrada);
  end;
end;


Exemplo de uso:
Código:
Descomprimir('C:\Compactado.zip', 'C:\Descompactado');


Espero que ajude!
_________________
Visite meu blog: http://devsistem.blogspot.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB