Página 2 de 2

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 17:25
por lugab
Não funciona não, Toledo, inclusive essa sintaxe abaixo provoca um erro em tempo de execução, e o windows até abre a tela que reporta erros.

Código: Selecionar todos

aDir1 := {"*.DBF","*.FPT","*.CDX"}
if !hb_zipfile( vNome_zip1,aDir1, 9, ,.T., "senha",.T.,.T,)
    Alert("Backup 1 nao foi concluido, verifique !!!")
endif
É que a LIB exige que seja colocado todo o caminho dos arquivos a serem zipados, ou seja, Tem que informar -> c:\sistemas\db\*.dbf

_________________________________________________________________________

Estou convencido que essa lib é super modesta , híper limitada e cheia de erros, dentre os quais esse descoberto e relatado pelo Toledo..

- A lib não oferece recurso de incluir tb os arquivos de sub-pastas (apesar de os 2 .T. do final do comando Lib_zipfile() existirem visando este fim)

- A lib ignora e não zipa quando há mais de um tipo de arquivo a ser zipado , ex: *.dbf + *.fpt + *.cdx , etc, em um mesmo arquivo final

Então, o jeito é eu continuar me virando dando RUN no zipador de 16 bits (pkzip.exe) , já q ainda não achei um outro executável que faça as mesmas tarefas do PKZIP.EXE mas que seja compilado em 32 bits.

Código: Selecionar todos

Run PZIP.EXE -R -P ARQUIVO.ZIP *.DBF *.FPT *.CDX
Mas obrigado, Toledo, pq eu realmente aprendi muitas coisas, fazendo esses testes todos...

Gabriel

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 20:04
por Toledo
Gabriel, faça um teste com este código:

Código: Selecionar todos

FUNC MAIN()
LOCAL cNomeArquivoZip:="backup.zip",;
      cSenhaZip:="qwert",;
      cArquivos:={"*.DBF","*.FPT","*.CDX"}

      BackZip(cNomeArquivoZip,cSenhaZip,cArquivos)

RETU NIL

PROC BackZip(cNomeZip,cSenha,aNomeArq)
LOCAL hZip, aDir, aFile, cPath, cFileName, cExt, cArq

HB_FNameSplit( cNomeZip, @cPath, @cFileName, @cExt )
IF EMPTY( cExt )
   cExt := ".zip"
ENDIF
cNomeZip := HB_FNameMerge( cPath, cFileName, cExt )

IF hb_isString( aNomeArq )
   aNomeArq := { aNomeArq }
ENDIF

hZip := HB_ZIPOPEN( cNomeZip )
IF !EMPTY( hZip )
   FOR EACH cArq IN aNomeArq
      IF !EMPTY( cArq )
         HB_FNameSplit( cArq, @cPath, @cFileName, @cExt )
         aDir := HB_DirScan( cPath, cFileName + cExt )
         FOR EACH aFile IN aDir
            IF ! cPath + aFile[ 1 ] == cNomeZip
               HB_ZipStoreFile( hZip, cPath + aFile[ 1 ], cPath + aFile[ 1 ], cSenha )
            ENDIF
         NEXT
      ENDIF
   NEXT
   HB_ZIPCLOSE( hZip )
ENDIF
RETURN
No nome dos arquivos, caso seja necessário, você pode informar também o caminho.

Abraços,

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 21:10
por lugab
Que doideira, Toledo...

To usando Xharbour 1.000 e HBZip.lib , além de outras Libs padrão, normalmente usadas em todas aplicações e as funções abaixo não estão dentro de nenhuma delas..

Hb-ZipOpen()
Hb_DirScan()
Hb_ZipStoreFile()
Hb_ZipClose()

Por acaso vc sabe qual lib tem essas funções no xharbour 1.00 ?

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 21:23
por Toledo
Gabriel, ta explicado então... eu to testando com o Harbour 2.1.

Abraços,

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 21:44
por lugab
Ah era isso Toledo ! kkk, então agora vai !

Na verdade eu vinha seguindo o ttópico desde o início, testando os exemplos que ainda eram com xharbour..

Então eu vou baixar um harbour igual o seu e já-já eu te dou um retorno...

E muito obrigado por todo esse tempo dispensado, Toledo.

Babriel

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 22:32
por Toledo
Gabriel, segue abaixo o link do Harbour Nightly:

http://sourceforge.net/projects/harbour ... s/nightly/

O exemplo que passei, usei as libs: hbziparc, hbmzip e minizip.

Abraços,

Re: Busca de Unidades no Computador

Enviado: 15 Fev 2011 22:54
por lugab
Pronto, Toledo, testei com o harbour 2.0 e ficou supimpa..

Ele roda rapidinho numa base média de dados, bem melhor que o poróprio pkzip.exe

E pensar que eu já tava jogando a toalha hein ? Aprendi a lição..

Recomendo aos colegas usarem esse pequeno código acima pra zipar seus dados e finalmente poder rodar seus aplicativos tb no windows 64 nits..

No mais é te agradecer mais uma vez, Toledo, e dizer q foi esse seu fórum q viabilizou o trabalho e o emprego de dezenas de clipeiros q estavam desnorteados.

Grato,

gabriel

Re: Busca de Unidades no Computador

Enviado: 04 Mai 2011 01:24
por fladimir
Pessoal desculpe minha ignorancia, mas não consegui rodar nada, uso o Harbour 2.1.xxx e pra ser sincero não sei a diferença entre as libs:
HBZLIB
HBMZIP
HBZIPARC

se linko meu prg de exemplo com elas individualizadas ou juntas ou aos pares fala q falta no mínimo as funções

Hb-ZipOpen()
Hb_ZipStoreFile()
Hb_ZipClose()

ou ainda

HB_ZipFile()

Exemplos de Codigos q tentei compilar:

Código: Selecionar todos

/*
 * $Id: zipa.prg 14088 2010-03-07 14:19:03Z vszakats $
 */

PROCEDURE Main( cZip, ... )
    LOCAL a, b, c

    SET DATE TO ANSI
    SET CENTURY ON

    ? hb_ZipFile( cZip, hb_AParams() )

    a := hb_GetFilesInZip( cZip, .T. )

    FOR EACH b IN a
       ?
       FOR EACH c IN b
          ?? c, ""
       NEXT
    NEXT

    RETURN

Código: Selecionar todos

FUNC MAIN()
LOCAL cNomeArquivoZip:="backup.zip",;
      cSenhaZip:="qwert",;
      cArquivos:={"*.DBF","*.FPT","*.CDX"}

      BackZip(cNomeArquivoZip,cSenhaZip,cArquivos)

RETU NIL

PROC BackZip(cNomeZip,cSenha,aNomeArq)
LOCAL hZip, aDir, aFile, cPath, cFileName, cExt, cArq

HB_FNameSplit( cNomeZip, @cPath, @cFileName, @cExt )
IF EMPTY( cExt )
   cExt := ".zip"
ENDIF
cNomeZip := HB_FNameMerge( cPath, cFileName, cExt )

IF hb_isString( aNomeArq )
   aNomeArq := { aNomeArq }
ENDIF

hZip := HB_ZIPOPEN( cNomeZip )
IF !EMPTY( hZip )
   FOR EACH cArq IN aNomeArq
      IF !EMPTY( cArq )
         HB_FNameSplit( cArq, @cPath, @cFileName, @cExt )
         aDir := HB_DirScan( cPath, cFileName + cExt )
         FOR EACH aFile IN aDir
            IF ! cPath + aFile[ 1 ] == cNomeZip
               HB_ZipStoreFile( hZip, cPath + aFile[ 1 ], cPath + aFile[ 1 ], cSenha )
            ENDIF
         NEXT
      ENDIF
   NEXT
   HB_ZIPCLOSE( hZip )
ENDIF
RETU
e o pior é q se compilo dentro da pasta contrib\ziparc\tests\zipa.prg sem informar nenhuma lib tipo somente hbmk2 zipa.prg gera o executavel sem reclamar a função hb_zipFile() não sei entendo pq, acredito q é algo relacionado aos .hbp .hbm .hpp da vida q tem lá e na pasta anterior.

Alguém pode ajudar ?

Talvez devesse criar um novo tópico na sessão Harbour se algum moderador assim achar necessário...
:{

Busca de Unidades no Computador

Enviado: 19 Nov 2011 00:45
por Pablo César
preciso criar uma rotina de BackUp simples, para copia em penDrive. Só que o penDrive, uma hora é G:, outra é F:, desta forma não da para fezer um arquivo.bat para executar.
Agora tem uma rotina disponível na seção de Downloads: clique aqui pra baixá-lo

Busca de Unidades no Computador

Enviado: 16 Jun 2012 08:31
por Jairo Maia
Olá Fladimir,

Faz mais de um ano seu post acima, mas diga-me se você conseguiu resolver o problema e compilar estas funções agregadas ao seu sistema.

Pergunto porque esta semana e com a ajuda deste tópico, consegui me livrar dos "Velhos, Bons e Guerreiros" PKZIP e PKUNZIP, e sem a necessidade de usar qualquer aplicativo externo para backup e restauração.

Enfrentei também o problema que você citou, e foi resolvido colocando na pasta de cada projeto os seguintes arquivos: HBMK.HBM e HBZIPARC.HBC

Conteúdo do arquivo: hbmk.hbm

Código: Selecionar todos

hbziparc.hbc
E o arquivo: hbziparc.hbc ( cópia fiel da pasta HB30\CONTRIB\HBZIPARC )

Código: Selecionar todos

#
# $Id: hbziparc.hbc 16259 2011-02-09 15:58:45Z vszakats $
#

libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=../hbmzip/hbmzip.hbc

Busca de Unidades no Computador

Enviado: 06 Dez 2015 12:52
por Vlademiro
Finalmente o meu problema foi resolvido tb. Obrigado a todos!

:D