Página 1 de 1

Backup c/ ZIP Xharbour 1.0

Enviado: 16 Mar 2008 17:54
por ronnimadeira
Como faço um bom programa de backup no xHarbour 1.0 que compacte bem os arquivos.

Enviado: 16 Mar 2008 18:32
por sygecom
Baseado no exemplo abaixo vc pode melhor para como vc quiser e desejar:
https://pctoledo.org/forum/viewtopic.php?t=6757

Enviado: 16 Mar 2008 19:09
por Hasse
Segue um exemplo do pacote xHarbour, em \tests.
Eu não uso, mas testei, e funciona muito bem. Anexei algumas informações, quase uma documentação de uso.

Código: Selecionar todos

*    HB_ZIPFILE( <cFile>, <cFileToCompress> | <aFiles>, <nLevel>, 
*                <bBlock>, <lOverWrite>, <cPassword>, <lWithPath>, <lWithDrive>,<cBlock>) 
*
*    HB_UNZIPFILE( <cFile>, <bBlock>, <lWithPath>, <cPassWord>, <cPath>,
*                  <cFile> | <aFile>, <pFileProgress> ) ---> lCompress
*
*  Parametros.
*  1 - Arquivo zip que será criado
*  2 - Array com os nomes dos arquivos a serem criados
*  3 - Nivel de compressão
*  4 - Bloco para usar uma barra de progressão mostrando o progresso total
*  5 - Se vai sobrescrever arquivos existentes no ZIP
*  6 - Senha para abrir o arquivo
*  7 - .T. ou .F. se vai preservar os diretorios originais
*  8 - .T. ou .F. se vai preserver a unidade original
*  9 - Bloco para usar uma barra de prograssão mostrando o progresso do arquivo atual.
*  	Isto para gerar o zip, existem outras rotinas, veja no arquivo zipnews.txt na pasta DOC\EN do
*  	xHarbour que ensina o uso de todas as rotinas.
*  	Wagner Nunes


FUNCTION MAIN()

   aFiles := {"Arq_data.dbf","arquni.dbf","setup.dbf","setup1.dbf","exares.dbf"}

   cFile1          := "TestDest1.zip"		&& ou "TestDest"
   cFile2          := "TestDest2"
   cFileToCompress := "paciente.dbf"

   clear
   @ 10,10 say "Comprimindo o primeiro arquivo"

   HB_ZIPFILE( cFile1, cFileToCompress ) 

   @ 12,10 say "Comprimindo o segundo arquivo"

public nPos, nTotal

SETCOLOR("N/BG")
@ 19,09 say space(65)
@ 20,09 say space(65)
@ 21,09 say space(65)
SETCOLOR("R/N")

   HB_ZIPFILE( cFile2, aFiles, , , .T., , .T., , {|nPos,nTotal| GaugeUpdate({1},(nPos/nTotal))} )
RETURN(.T.)
*
*
FUNCTION GaugeUpdate( aG , nn )

	
	@ 16,10 SAY "NN"
	?? NN * 100
	
	N1 := NN*60
	ccc := REPL(CHR(219),INT( N1 )) + SPACE(60-N1)
	@ 20,10 SAY ccc
	?
	? nn * 100

RETURN(.T.)

Enviado: 26 Mar 2008 13:43
por sygecom
Só pra avisar que atualizei o CODIGO FONTE do BACK-UP agora esta com GAUGE.