Compactando Arquivos no VB 


Que tal um compactador decente e grátis ???? Tudo mundo vai querer !!! Muito bem , neste artigo estarei mostrando como usar duas bibliotecas freeware ( grátis ) para compactar e descompactar arquivos. 

Azip32.dll e Aunzip32.dll fazem o serviço de descompactar e compactar arquivos , sendo que os arquivos gerados são compatíveis com o PKzip e o Winzip . 

Vamos mostrar um projeto utilizando as bibliotecas. 

Private Sub cmdCompactar_Click()
    Compacta txtArqCompactado, txtArqOrigem
    lblProgresso = ""
End Sub

Para o caso em questão teremos o comando compacta executado da seguinte forma:

Compacta  "pak.zip" , "c:\teste\*.mdb"

Traduzindo: Os arquivos com extensão mdb do diretório c:\teste serão compactados gerando o arquivo pak.zip. Como não informamos o local onde o arquivo deveria ter sido gerado , ele será gerado no diretório atual.

Private Sub cmdDescompacta_Click()
   DesCompacta  txtArqCompactado, "*.*", txtExtrairPara ,  False
End Sub

A rotina para descompactar para o nosso caso seria:

Descompacta "pak.zip" , "*.*" ,  "c:\teste"

Traduzindo: O arquivo pak.zip será descompactado , sendo que todos os arquivos deverão ser extraídos ( *.* ) para o diretório c:\teste.

Private Sub Form_Load()
  
'É necessário inicializar a biblioteca de compactação.
   InicializaZip Me, txtZip
End Sub

Aqui estamos iniciando a biblioteca de compactação.

Private Sub txtZip_Change()
'Indicação de progresso da compactação/descompactação por arquivo
'Tipo de ação que esta sendo feita no momento
  
lblProgresso = TipoAção(Val(GetAction(txtZip))) & " "
  
'Nome do arquivo que esta sendo compactado
  
lblProgresso = lblProgresso & GetFileName(txtZip) & " -> "
   '
Porcentagem de compactação do arquivo
   lblProgresso = lblProgresso & GetPercentComplete(txtZip) & "%"
  
'Força a atualização da tela
   DoEvents
End Sub

O evento Change do exibe o progresso da (des)compatação indicando o  nome do arquivo e a porcentagem atual.

As funções usadas aqui estão definidas no módulo bas ( que eu não vou exibir por que é muito grande) . As principais funções são:

Função Descrição
GetPercentComplete Retorna o progresso da tarefa medido em porcentagem
GetFileOriginalSize Retorna o tamanho original do arquivo sendo descompactado
GetFileName Retorna o nome do arquivo sendo compactado
GetFileCompressionRatio Retorna a taxa de compressão do arquivo sendo compactado
GetAction Usada com a função TipoAcao
TipoAcao Retorna o tipo de operação realizada atualmente

O projeto sendo executado:

Agora só resta fazer o download dos arquivos e das dll´s. Clique aqui => Compactando no VB.

Se você precisa compactar para disquetes de 1.44 pegue aqui o projeto exemplo de autoria de Gesiel Ferreira de Souza : Backup em vários disquetes.

Inté mais .      (Referência : Revista Fórum Access - Alexandre Scuriza )


José Carlos Macoratti