Criando arquivo ZIP com o Delphi
Atualmente é muito comum o uso de arquivos ZIP, seja para backups ou para transferência de dados.
Durante muito tempo, sempre foi necessário o uso de componentes de terceiros para a
execução desta tarefa.
A partir do Delphi XE 2, há disponível a unit System.Zip, que facilitará este trabalho.
Eliminando a necessidade do uso de componentes.
Veja os exemplos:
Criando um ZIP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function CriarZipFile(FZipFile, AFileName: string): Integer;
var
z: TZipFile;
begin
result := 0;
z := TZipFile.Create;
try
if fileExists(FZipFile) then
z.Open(FZipFile, zmReadWrite)
else
z.Open(FZipFile, zmWrite);
z.Add(AFileName, extractFileName(AFileName));
z.Close;
result := 1;
finally
z.Free;
end;
end; |
function CriarZipFile(FZipFile, AFileName: string): Integer;
var
z: TZipFile;
begin
result := 0;
z := TZipFile.Create;
try
if fileExists(FZipFile) then
z.Open(FZipFile, zmReadWrite)
else
z.Open(FZipFile, zmWrite);
z.Add(AFileName, extractFileName(AFileName));
z.Close;
result := 1;
finally
z.Free;
end;
end;
Descompactando o ZIP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function ZipFileDecompress(FZipFile, APath: string): Integer;
var
z: TZipFile;
begin
result := 0;
z := TZipFile.Create;
try
if fileExists(FZipFile) then
z.Open(FZipFile, zmReadWrite)
else
raise exception.Create('Não encontrei: ' + FZipFile);
z.ExtractAll(APath);
z.Close;
result := 1;
finally
z.Free;
end;
end; |
function ZipFileDecompress(FZipFile, APath: string): Integer;
var
z: TZipFile;
begin
result := 0;
z := TZipFile.Create;
try
if fileExists(FZipFile) then
z.Open(FZipFile, zmReadWrite)
else
raise exception.Create('Não encontrei: ' + FZipFile);
z.ExtractAll(APath);
z.Close;
result := 1;
finally
z.Free;
end;
end;
A unit System.Zip ainda oferece outros recursos, que será tema de outros posts.
Autor original: Amarildo Lacerda
Este texto foi escrito bom base no material disponível em:
https://github.com/amarildolacerda/docs/blob/master/DelphiXFirebid.pdf
Dúvidas ou sugestões deixe nos comentários do post.
-
InfusTec
-
13.612 views
- 3 comentários
- 17 de fevereiro de 2016
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Ótimo exemplo, bem mais simples que usar zlib.
Ótima dica, essa classe é mais interessante e simples que a zlib que se torna complexa quando se faz necessário compactar mais de um arquivo.
como eu implemento isto em um botão ou 2 botoes?