ZLib fácil com JazzZip

 

Para tornar fácil o trabalho de embutir recursos (Textos, Imagens, Vídeos, etc) nos meus aplicativos, achei interessante adicionar a possibilidade de compactar e decompactar estes estes recursos, então criei uma interface que simplifica o uso da ZLib e é flexível para ser re-utilizada com outros tipos de compactação, clique aqui para ver a unit JazzZip.pas

Duas classes base foram criadas TJzZip e TJzUnzip, ambas contém o método execute que é sobrescrito nas classes que implementam a chamada a compactação/descompactação. Para ZLib criei especificamente TJzZLibZip e TJzZLibUnzip.

Mas não é necessário conhecer as classes base e nem as classes que implementam a compactação, basta chamar os métodos públicos ZipData e UnzipData, estes métodos contém overloads para simplificar as diferentes necessidades.

É possível compactar TStream ou Strings, sendo o parâmetro de saída opcional, quando se tratar de um TStream.

 

Exemplos:

Compactar um TStream e salvar em um arquivo

procedure TZipForm.SaveFile(Data: TMemoryStream; const FileName: string);
begin
  ZipData(Data);
  Data.SaveToFile(FileName);
end;

 

Carregar um arquivo compactado com zlib em um TStream e descompactar

procedure TZipForm.LoadFile(Data: TMemoryStream; const FileName: string);
begin
  Data.LoadFromFile(FileName);
  UnzipData(Data);
end;

 

Várias outras opções estão disponíveis e é bem simples de implementar uma classe para utilizar outros compactadores.

Criei um projeto com exemplo de outras funcionalidades

image

Download do projeto, contendo a unit JazzZip.pas

 

Os métodos ZipData e UnzipData, utilizam duas variáveis para criar as instâncias das classes de compactação e descompactação, se você especializar as classes base para por exemplo usar ZIP, basta definir nas variáveis as novas classes.

 

var
  ZipClass: TJzZipClass = TJzZLibZip;
  UnzipClass: TJzUnzipClass = TJzZLibUnzip;

 
 
 

0 Comments

 

You can be the first one to leave a comment.

 

Leave a Comment

 




XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>