Página 1 de 1

Compilar com ziplib

Enviado: 19 Jan 2010 18:59
por coucello
Boa tarde, senhores.
Estou tendo dificuldades para compilar uma rotina para utilizar o ziplib. O exemplo está em seguida e o erro também. Será que poderiam me ajudar?
Agradeço, desde já.

FUNCTION testezip()
local nhzipfile

nhzipfile := HB_ZipOpen( "zipfile.zip", HB_ZIP_OPEN_ADDINZIP )
for nveces = 1 to len ( afiles )
HB_ZipStoreFile( nhzipfile,afiles[nveces])
next nveces
hb_zipclose(nhzipfile)

RETURN nil

Erro:

Unresolved external _HB_FUN_HB_ZIPOPEN
Unresolved external _HB_FUN_HB_ZIPSTOREFILE
Unresolved external _HB_FUN_HB_ZIPCLOSE

Re: Compilar com ziplib

Enviado: 19 Jan 2010 23:37
por clodoaldomonteiro
Essa é minha rotina:

Código: Selecionar todos

//////////////////
//use a HBZIP.LIB
/////////////////
#include "Directry.ch"
#include "common.ch"

PROC GCOMPAC
   local mcaminho,marqarj,marqarja,marq,mtot:=0,mtamdisk,mdisco
   local aDir1:=Directory(DRVDBF+"*.db?")
   local aDir2:=Directory(DRVDBF+"*.mem")
   local aDir3:=Directory(DRVDBF+"*.jpg")
   local aDir4:=Directory(DRVDBF+"DB*.*")
   local afiles:={},aTamanho:={}
   Local x
   local nLen
   local aGauge

   mcaminho:=DRVdbf
   marqzip :='BKSCP_M'+M->pe_mm+'_'+alltrim(M->par_rota)
   mtamdisk:=if(mdrv $ 'AB','-v1440000','-v20000000')

   For x:=1 to len(aDir1)
      aadd(aFiles  ,drvdbf+adir1[x,1])
      aadd(aTamanho,adir1[x,2])
   next
   For x:=1 to len(aDir2)
      aadd(aFiles  ,drvdbf+adir2[x,1])
      aadd(aTamanho,adir2[x,2])
   next
   For x:=1 to len(aDir3)
      aadd(aFiles  ,drvdbf+adir3[x,1])
      aadd(aTamanho,adir3[x,2])
   next
   For x:=1 to len(aDir4)
      aadd(aFiles  ,drvdbf+adir4[x,1])
      aadd(aTamanho,adir4[x,2])
   next

   nLen=len(afiles)  // quantidade de arquivos
   mtotBytes:=0      // total de bytes, vai acrescentando

   if hb_zipfile( drvdbf+marqzip, afiles, 9, {|cFile,nPos| eProgresso( cFile, nPos, nLen) },.t., ,.f.,.f., {|cFile,nPos2| cProgressoFile( cFile, nPos2) } )
      mOrigem :=drvdbf+marqzip+'.zip'
      mDestino:=mDrv  +':\'+'BKSCP_A'+M->ps_aa+'_'+Alltrim(M->par_rota)+'.zip'

      COPY FILE (mOrigem) TO (mDestino)

      if fError() = 0                  // se nÆo teve nenhum erro ao copiar
         dbox("BACKUP COMPACTADO FOI EFETUADO COM SUCESSO.|O arquivo "+mDestino+" foi copiado na Unidade de Disco "+mdrv+':\',13,,,,"ATENۂO "+ALLTRIM(USUARIO)+'!')
      else
         dbox('A OPERAۂO FALHOR.|Erro encontrado ao tentar copiar|o arquivo gerado para o disco de destino.',13,,,,"ATENۂO "+ALLTRIM(USUARIO)+'!')
      endif
   else
      dbox("A OPERAۂO FALHOR.|ERROS FORAM DETECTADOS DURANTE O BACKUP.",13,,,,"ATENۂO "+ALLTRIM(USUARIO)+'!')
   endif
   cbc1()
   CHDIR(direxe)
   RETU              // FIM DE GCOMPAC

Código: Selecionar todos

   Static Function eProgresso(vtxt,xPerc,wTot)
      ************************************
      @ l_s+06,c_s+13 SAY space(80)
      @ l_s+06,c_s+13 SAY vtxt      // nome do arquivo
      @ l_s+08,c_s+13 SAY tran((xPerc/wTot)*100, '@E 999.99')+" %"
      @ l_s+09,c_s+66 SAY tran( xPerc, '@E 99,999') + ' / ' + tran( wTot, '@E 99,999') + ' Arqs'
      return nil

      ************************************
   Static Function cProgressoFile( cFile, nPos2 )
      @ l_s+09,c_s+13 SAY space(50)
      @ l_s+09,c_s+13 SAY Alltrim(tran( cFile, '@E 999,999,999'))+" / "+alltrim(tran( nPos2, '@E 999,999,999'))+' bytes'
      if cFile = nPos2
         mTotBytes+=nPos2
         @ l_s+08,c_s+66 SAY tran( mTotBytes, '@E 999,999,999') + ' bytes'
      endif
      return nil
Voce pode enxugar ela e colocar no seu sistema.
A função DBOX é uma função que mostra uma caixa de diálogo, vc pode substituir por outra do HB.

Re: Compilar com ziplib

Enviado: 20 Jan 2010 10:44
por coucello
Obrigado Clodoaldo. Vou testar e te retorno.

Re: Compilar com ziplib

Enviado: 22 Jan 2010 22:26
por sygecom
Olá coucello,
É Harbour ou xHarbour ? Qual a versão ? e post o seu script de compilação.

Re: Compilar com ziplib

Enviado: 23 Jan 2010 00:58
por clodoaldomonteiro
Você pode excluir a função CBC1().

Eu usu as seguintes libs:
CT.LIB
DBFCDX.LIB
HBZIP.LIB
PCREPOS.LIB
WHAT32.LIB

Re: Compilar com ziplib

Enviado: 23 Jan 2010 12:09
por coucello
Leonardo, comecei recentemente a trabalhar com o xharbour. Estou em processo de conversão de um sistema clipper para xharbour e, por isso, a necessidade daquela rotina.
A versão do xharbour é a 1.0.0 simpex.
Além disso, estou usando o Xdev para edição/compilação dos sistemas.
Já tentei acrescentar as libs HZLIB e HBMLIB no projeto mas continua dando erro na compilação.
Grato.

Re: Compilar com ziplib

Enviado: 23 Jan 2010 13:06
por clodoaldomonteiro
Use a HBZIP.LIB, ela funciona muito bem no xHarbour 1.0.0.

Re: Compilar com ziplib

Enviado: 24 Jan 2010 12:32
por sygecom
Veja os exemplos do link abaixo:
viewtopic.php?f=43&t=6757

Re: Compilar com ziplib

Enviado: 27 Jan 2010 14:03
por coucello
Caso resolvido. Acredito que era algum problema com a HBZLIB. Acrescentei a do XHARBOUR\LIB como citado pelo Clodoaldo e funcionou.
Obrigado.