|
Usuários |
|
34 Usuários Online
|
|
[Artigos]
Compressão e Descopressão de arquivos com a própria RTL do Delphi |
Publicado por nerdeX : Segunda, Janeiro 17, 2005 - 11:24 GMT-3 (6871 leituras)
1 Comentário Enviar para um amigo Versão para impressão
|
Não me perguntem o porquê, mas tenho um certo facínio por compressão de dados, sendo que já testei vários componentes. Hoje não uso nenhum deles e sim um pequeníssimo arquivo da própria RTL do Delphi chamado zLib.pas.
Fiquei surpreso com os resultados de eficiência, performance e taxas de compressão obtidos nos meus testes, onde equipara-se ao uso do compressor UPX.exe (algorítmo de compressão NRV criado por Markus F.X.J. Oberhumer e László Molnár).
Bem... agora vamos ver como é fácil, simples e leve sua implementação usando a zLib:
Insira zLib no Uses da sua Unit...
procedure TForm1.CompressãoClick(Sender: TObject);
var
FileIni, FileOut: TFileStream;
Zip: TCompressionStream;
begin
FileIni:=TFileStream.Create('C:\pasta\...arquivo a ser comprimido...', fmOpenRead and fmShareExclusive);
FileOut:=TFileStream.Create('C:\pasta\...arquivo comprimido...', fmCreate or fmShareExclusive);
Zip:=TCompressionStream.Create(clMax, FileOut);
Zip.CopyFrom(FileIni, FileIni.Size);
Zip.Free;
FileOut.Free;
FileIni.Free;
end;
procedure TForm1.DescompressãoClick(Sender: TObject);
var
FileIni, FileOut: TFileStream;
DeZip: TDecompressionStream;
i: Integer;
Buf: array[0..1023]of Byte;
begin
FileIni:=TFileStream.Create('C:\pasta\...arquivo comprimido...', fmOpenRead and fmShareExclusive);
FileOut:=TFileStream.Create('C:\pasta\...arquivo descomprimido...', fmCreate or fmShareExclusive);
DeZip:=TDecompressionStream.Create(FileIni);
repeat
i:=DeZip.Read(Buf, SizeOf(Buf));
if i <> 0 then FileOut.Write(Buf, i);
until i <= 0;
DeZip.Free;
FileOut.Free;
FileIni.Free;
end;
Dependendo da tua necessidade... poderá adaptá-lo para que execute a compressão e descompressão de pastas inteiras e também que realize um teste de verificação na integridade dos arquivos com o auxílio de uma tabela CRC 32.
Ricardo Bastos Campos
Tec em Proc de Dados e Acad. em Sist de Informação
Santa Maria - RS
ricbcampos@ubbi.com.br
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|