 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
r.alves Membro Junior

Registrado: Terça-Feira, 16 de Agosto de 2005 Mensagens: 376 Localização: Curitiba - PR
|
Enviada: Seg Ago 24, 2015 1:26 pm Assunto: Descompactar .ZIP |
|
|
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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3075 Localização: Belo Horizonte - MG
|
Enviada: Seg Ago 24, 2015 1:51 pm Assunto: |
|
|
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 |
|
 |
r.alves Membro Junior

Registrado: Terça-Feira, 16 de Agosto de 2005 Mensagens: 376 Localização: Curitiba - PR
|
Enviada: Seg Ago 24, 2015 2:02 pm Assunto: |
|
|
Entendo, mas eu utilizo o delphi 7, teria como utilizar o "Zip" mesmo assim? |
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3075 Localização: Belo Horizonte - MG
|
Enviada: Seg Ago 24, 2015 2:14 pm Assunto: |
|
|
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 |
|
 |
r.alves Membro Junior

Registrado: Terça-Feira, 16 de Agosto de 2005 Mensagens: 376 Localização: Curitiba - PR
|
|
Voltar ao Topo |
|
 |
matteusin Aprendiz


Registrado: Terça-Feira, 28 de Fevereiro de 2012 Mensagens: 156
|
Enviada: Seg Ago 24, 2015 2:16 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|