Explodir arquivo criado pela HbZip.Lib

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Explodir arquivo criado pela HbZip.Lib

Mensagem por lugab »

Bom dia...

Alguém pode compartilhar um fonte-exemplo de como Explodir (UNZIP) uma arquivo zipado que foi gerado (COM SENHA) usando a lib do harbour ?

É que depois do windows 64, até isso é a gente q tem que fazer.

Quero gerar o meu próprio, pq Testei o 7-zip.exe e ele não me atendeu


gabriel
lugab
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Explodir arquivo criado pela HbZip.Lib

Mensagem por Toledo »

Amigo, segue um pequeno exemplo de como compactar e descompactar um arquivo de backup:

Código: Selecionar todos

/****************************************
* Compilar: hbmk2 teste_zip.prg -lhbziparc -lhbmzip -lminizip
****************************************/
PROCEDURE Main()
   LOCAL cTipo := "1"
   LOCAL cDestino:=left("C:\"+CurDir()+spac(100),100)
   LOCAL cOrigem:=left("C:\"+CurDir()+"\*.DBF"+spac(100),100)
   LOCAL cSenha:=SPAC(10)
   LOCAL aArq:={}
   LOCAL c_ExtArq:="bck"  //extensao do arquivo que sera criado

   CLS
   SETMODE(25,80)

   DO WHILE .T.
      @ 5, 1 TO 13, 78
      @ 10,2 SAY REPL("-",76)
      @ 12,3 say REPL(".",74)
      @ 6,23 SAY "(1-Backup/2-Restaura)"
      @ 6, 3 SAY "Tipo............:" GET cTipo VALID (cTipo$[12])
      READ
      IF LASTKEY()=27
       EXIT
      ENDIF
      IF cTipo="2"
       cOrigem:=left("C:\"+CurDir()+"\backup."+c_ExtArq+spac(100),100)
      ENDIF
      @ 7, 3 SAY "Arquivo Origem..:" GET cOrigem PICT "@S56"
      @ 8, 3 SAY "Drive Destino...:" GET cDestino PICT "@S56"
      @ 9, 3 SAY "Senha...........:" GET cSenha PICT "@!"
      READ
      IF LASTKEY()=27
       EXIT
      ENDIF
      IF !FILE(ALLTRIM(cOrigem))
       Alert("Arquivo "+ALLTRIM(cOrigem)+";Nao encontrado!")
       LOOP
      ENDIF
      IF RIGHT(ALLTRIM(cDestino),1)!="\"
       cDest:=ALLTRIM(cDestino)+"\NUL"
       cArqZip:=ALLTRIM(cDestino)+"\backup."+c_ExtArq
      ELSE
       cDest:=ALLTRIM(cDestino)+"NUL"
       cArqZip:=ALLTRIM(cDestino)+"backup."+c_ExtArq
      ENDIF
      IF !FILE(cDest)
       Alert("O Drive "+ALLTRIM(cDestino)+";Nao encontrado!")
       LOOP
      ENDIF
      IF cTipo="1"
       aArq:={}
       IF "*" $ cOrigem
        aDir1 := directory(ALLTRIM(cOrigem))
        vPasta:= LEFT(cOrigem,RAT("\",cOrigem))
        for x=1 to len(aDir1)
         aadd(aArq,vPasta+aDir1[x,1])
        next
       ELSE
         aadd(aArq,ALLTRIM(cOrigem))
       ENDIF
       nTotal:=Len(aArq)

       hb_zipfile( cArqZip,aArq, 9,{|cFile,nPos| eProgresso( cFile, nPos,nTotal) },.t.,ALLTRIM(cSenha),.F.,.F., )

      ELSE
       cDest:=ALLTRIM(cDestino)
       IF RIGHT(ALLTRIM(cDestino),1)!="\"
        cDest+="\"
       ENDIF

       aArq:=hb_GetFilesInZip(ALLTRIM(cOrigem))
       nTotal:=Len(aArq)
       hb_UnzipFile( ALLTRIM(cOrigem),{|cFile,nPos| eProgresso( cFile, nPos,nTotal) },,ALLTRIM(cSenha),cDest,aArq)

      ENDIF
      EXIT
   ENDDO
RETURN

************************************
Function eProgresso(vtxt,xPerc,wTot)
************************************
Local nPre:=(xPerc*100)/wTot,;
      nBar:=(nPre*74)/100
@ 11,3 say "Concluido..: "+str(nPre,3,0)
@ 11,21 say "Arquivo: "+LEFT(vtxt+SPAC(40),44)
@ 12,3 say REPL("X",INT(nBar))
return nil
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Explodir arquivo criado pela HbZip.Lib

Mensagem por lugab »

Oi, Toledo

Acho q deixei de linkar alguma coisa e obtive esses erros na compilação.
Error: Unresolved external '_deflateInit2_' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|zip
Error: Unresolved external '_get_crc_table' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|zip
Error: Unresolved external '_crc32' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|zip
Error: Unresolved external '_deflate' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|zip
Error: Unresolved external '_deflateEnd' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|zip
Error: Unresolved external '_inflateInit2_' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|unzip
Error: Unresolved external '_inflate' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|unzip
Error: Unresolved external '_inflateEnd' referenced from H:\HB-ZIP\TESTE\HBMZIP.LIB|unzip
Será falta de algum .CH ou versão do HArbour ? Eu uso o Harbour2.0

Das 3 libs q vc mencionou, só consegui localizar e linkar as 2 primeiras.
Minizip.lib eu não achei, nem nada começando com HB q fosse similar
* Compilar: hbmk2 teste_zip.prg -lhbziparc -lhbmzip -lminizip
lugab
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Explodir arquivo criado pela HbZip.Lib

Mensagem por Toledo »

lugab escreveu:Eu uso o Harbour2.0
O exemplo que passei foi testado a partir do Harbour 3.0, então não sei se vai funcionar com a versão 2.0.

Verifique se nesta sua versão não existe a pasta \contrib\hbmzip\tests e \contrib\hbziparc\tests, onde você pode encontrar um código exemplo.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Explodir arquivo criado pela HbZip.Lib

Mensagem por lugab »

Oi Toledo,

Eu compilei com o Hb 3.0 e deu esses erros no minizip.lib q está na pasta lib

Código: Selecionar todos

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
zipunzip.c:
	d:\borland\bcc55\bin\ilink32.exe -Gn -Tpe -s zipunzip.obj, zipunzip.exe,, d:\borland\bcc55\LIB\c0w32.obj  d:\hb30\lib\hbrtl.lib  d:\hb30\lib\xhb.lib  d:\hb30\lib\gtwvg.lib  d:\hb30\lib\hbvm.lib  d:\hb30\lib\hblang.lib  d:\hb30\lib\hbct.lib  d:\hb30\lib\hbmacro.lib  d:\hb30\lib\hbrdd.lib  d:\hb30\lib\hbcommon.lib  d:\hb30\lib\hbpp.lib  d:\hb30\lib\hbwin.lib  d:\hb30\lib\hbtip.lib  d:\hb30\lib\hbsix.lib  d:\hb30\lib\gtwin.lib  d:\hb30\lib\rddcdx.lib  d:\hb30\lib\rddntx.lib  d:\hb30\lib\rddfpt.lib  d:\hb30\lib\hbpcre.lib  d:\hb30\lib\hbziparc.lib  d:\hb30\lib\hbmzip.lib  d:\hb30\lib\minizip.lib  d:\borland\bcc55\lib\cw32.lib  d:\borland\bcc55\lib\import32.lib,
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_deflateInit2_' referenced from D:\HB30\LIB\MINIZIP.LIB|zip
Error: Unresolved external '_get_crc_table' referenced from D:\HB30\LIB\MINIZIP.LIB|zip
Error: Unresolved external '_crc32' referenced from D:\HB30\LIB\MINIZIP.LIB|zip
Error: Unresolved external '_deflate' referenced from D:\HB30\LIB\MINIZIP.LIB|zip
Error: Unresolved external '_deflateEnd' referenced from D:\HB30\LIB\MINIZIP.LIB|zip
Error: Unresolved external '_inflateInit2_' referenced from D:\HB30\LIB\MINIZIP.LIB|unzip
Error: Unresolved external '_inflate' referenced from D:\HB30\LIB\MINIZIP.LIB|unzip
Error: Unresolved external '_inflateEnd' referenced from D:\HB30\LIB\MINIZIP.LIB|unzip

** error 2 ** deleting all

Desconfia se alguma coisa q eu fiz errado , ou então, tens algum outro exemplo pra eu testar ?

Um abraço

PS: Eu consegui achar o Minizip.lib no Hb 3.00 e linkei, juntamente com hbziparc.lib e hbmzip.lib
lugab
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Explodir arquivo criado pela HbZip.Lib

Mensagem por Toledo »

Amigo, acabei de compilar este meu exemplo, usando Harbour 3.0 e o BCC55:
C:\programa\forum\zip>hbmk2 demo.prg -lhbziparc -lhbmzip -lminizip
hbmk2: Processando op‡äes do ambiente: -compiler=bcc
Harbour 3.0.0 (Rev. 16951)
Copyright ( c ) 1999-2011, http://harbour-project.org/
Compiling 'demo.prg'...
Lines 88, Functions/Procedures 2
Generating C source output to 'C:\DOCUME~1\TOLEDO~1\CONFIG~1\Temp\hbmk_putsm7.dir\demo.c'... Done.
C:\DOCUME~1\TOLEDO~1\CONFIG~1\Temp\hbmk_putsm7.dir\demo.c:
Turbo Incremental Link 5.00 Copyright ( c ) 1997, 2000 Borland

C:\programa\forum\zip>dir *.exe
O volume na unidade C não tem nome.
O número de série do volume é B0AA-2831

Pasta de C:\programa\forum\zip

22/06/2015 07:42 933.888 demo.exe
1 arquivo(s) 933.888 bytes
0 pasta(s) 28.407.132.160 bytes disponíveis

C:\programa\forum\zip>
Não sei dizer com certeza qual é o problema com a sua compilação, mas segue abaixo a minha configuração de ambiente do Harbour e do BCC:

Harbour 3.0
SET PATH=c:\bcc55\bin;c:\hb30\bin;%PATH%
set HB_COMPILER=bcc
Borland BCC:

Arquivo TLink32.cfg que está na pasta \BCC55\BIN:
/LC:\BCC55\lib;C:\hb30\LIB\win\bcc
Arquivo bcc32.cfg que está na pasta \BCC55\BIN:
-IC:\bcc55\include;C:\hb30\include
-LC:\bcc55\lib;C:\hb30\lib\win\bcc
Arquivo ILINK32.CFG que está na pasta \BCC55\BIN:
-LC:\BCC55\LIB;C:\hb30\LIB\WIN\BCC
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Explodir arquivo criado pela HbZip.Lib

Mensagem por lugab »

Obrigado,Toledo

Sinistro, né ? Aliás, essa é a maior queixa dos iniciantes. É bem mais complicado compilar sem erros até mesmo os exemplos
do próprio Harbour do que adaptar um .PRG pré-existente.

Só resta desconfiar do harbour 3.0 e do BCC que baixei e instalei...

Um abraçio...
lugab
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Explodir arquivo criado pela HbZip.Lib

Mensagem por sygecom »

Gabriel,
Percebo que muitos baixam muita coisa e na hora de usar acabam misturando muitas versão e projetos diferente. As vez é melhor capar tudo fora e seguir do inicio ao fim com apenas um ambiente em uso, caso não de certo apaga tudo e começa de novo com outro ambiente. NÃO SEI se foi seu caso, mas fique atento entre as diversidades de versões e projetos(harbour/xharbour)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Explodir arquivo criado pela HbZip.Lib

Mensagem por Itamar M. Lins Jr. »

Pode não ser culpa do iniciante.
Aqui neste forum tem tutoriais velhos, coisas antigas. Vai ver ele seguiu alguns desses.
Para o iniciante começar com Harbour 3.0 e BCC ? Pode ser algum tutorial defasado. Ai pode ser que, o iniciante pegue uma LIB do xHarbour e jogue no Harbour etc...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Explodir arquivo criado pela HbZip.Lib

Mensagem por sygecom »

De fato, uma boa atualizada nos tutorial ajudaria os iniciante.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Explodir arquivo criado pela HbZip.Lib

Mensagem por lugab »

Consegui, pessoal

Apaguei minha versão anterior e baixei o HB3.0 do link da sourcefog.net e aí funcionou

Obrigado ao Toledo pela solução e a todos que opinaram sobre como resolver o conflito de versões
lugab
Responder