hb_UnzipFile() sempre retornar .F.

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

Moderador: Moderadores

Araújo
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 02 Abr 2013 22:22
Localização: Recife-PE

hb_UnzipFile() sempre retornar .F.

Mensagem por Araújo »

Srs,
Estou desenvolvendo uma rotina de backup/restore usando as funções hb_ZipFile() e hb_UnzipFile(). Encontrei dificuldades na compilação, mas já consegui superá-las com ajuda aqui do fórum (viewtopic.php?f=4&t=19788). O arquivo .zip está sendo gerado sem problemas, mas para o procedimento de descompactação com a função hb_UnzipFile() não consigo êxito. Esta função sempre retorna .F..
Na única documentação que descreve o uso dos parâmetros (https://harbour.github.io/doc/hbziparc#hb_unzipfile) faz uso da função hb_GetFilesInZip() que não encontrei documentação a respeito!... já fiz várias tentativas mas todas sem sucesso!... Vi aqui no fórum alguns tópicos de dúvidas, tentei aplicar algumas mudanças, mas sem sucesso!... Uso o harbour 3.2!
Alguém poderia me orientar, por favor?!...

A propósito, onde encontro descrição da função hb_GetFilesInZip()?

Abaixo está a função de descompactação:

Código: Selecionar todos

/**
 * Restaura um arquivo .zip utilizando funções da hbziparc.lib
 */
FUNCTION FRestore()
Local cPathBkp:="\BK_DBSGC\"
Local aFilesBkp:=DIRECTORY(cPathBkp+"*.zip"), cPassword
Local aFileList:={}, nMaxFNmLen:=0, nFileRestore, cFileRestore, nOpcRestore, aExtract

If !HB_DirExists(cPathBkp)
   Alert("Aten‡„o;N„o identificado a pasta de backup:;\BK_DBSGC\",,"Gr+/R")
   Return Nil
ElseIf Len(aFilesBkp) = 0 
   Alert("Aten‡„o;N„o existe arquivo de backup em:;\BK_DBSGC\",,"Gr+/R")
   Return Nil 
Endif

ASORT( aFilesBkp,,,{ |a1File,a2File| a1File[F_NAME] > a2File[F_NAME] } )

AEVAL( aFilesBkp, { | a1File | nMaxFNmLen := MAX( nMaxFNmLen, LEN( a1File[ F_NAME ] ) ) } )
						   
AEVAL( aFilesBkp, {|a1File| AADD(aFileList, PADR( a1File[ F_NAME ], nMaxFNmLen + 1 )+" "+;
											TRAN( a1File[ F_SIZE ]/1000, "@E 999,999,999" )+" "+;
											DTOC(a1File[ F_DATE ])+" "+;
											a1File[ F_TIME ]+" "+;
											a1File[ F_ATTR ] ) } )
nFileRestore:=FselectFile(aFileList)
If nFileRestore = 0 
   Return Nil
Endif

nOpcRestore:=Alert("Aten‡„o;Selecionado o arquivo:;"+aFilesBkp[nFileRestore,F_NAME]+" para Restore.;"+;
                   "Prosseguir com restaura‡„o do backup?",{"N„o","Sim"},"Gr+/b")

If nOpcRestore = 2

    dbCloseAll()
	
    cFileRestore:=aFilesBkp[nFileRestore,F_NAME]
    aExtract := hb_GetFilesInZip( cFileRestore )
	If hb_UnzipFile( cFileRestore,;                                              // arquivo zip
                 	,;// {| cFile, nPos | FEvolucao(nPos,cFile,Len(aExtract))},; // Codeblock to execute while extracting
					,;                                                           // lToggle: Toggle to create directory if needed
					,;                                                           // cPassword: Password to use to extract files
					".\",;                                                       // cPath: Path to extract the files to - mandatory
					aExtract,;                                                   // cFile | aFiles: A File or Array of files to extract - mandatory
	                ,)                                                           // pFileProgress: Codeblock for File Progress

	   Alert("Aviso; Restore realizado com sucesso!")
	Else
	   cTexto:="ERRO; Falha no procedimento de restore!;"
       cTexto+="N„o foi possivel descompactar o arquivo de backup:;"
	   cTexto+=Alltrim(cFileRestore)
	   Alert(cTexto,,"w+/r")
	ENDIF
	
	FloginUser()
Endif				 
	  
Return Nil

/**
 * Selecionar o arquivo para restore
 */
Static FUNCTION FselectFile(aLista)
Local nFile:=0, cScreen:=SaveScreen(3,1,22,79)

Fbox(6,10,17,70,"D","Selecione o arquivo","W+/N")
@ 7,11 Say "Arquivo.....................  Tamanho(MB)   Data     Hora" Color("Gr+/n")

SetColor("w/n,n/w")
nFile:=ACHOICE(8,11,16,69,aLista) 
CorStand

RestScreen(3,1,22,79,cScreen)

Return(nFile) 
Grato pela atenção!..
Araújo
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 02 Abr 2013 22:22
Localização: Recife-PE

hb_UnzipFile() sempre retornar .F.

Mensagem por Araújo »

Eric.Developer escreveu:olá,
o mesmo que respondi no tópico de outra pessoa...

a princípio você esqueceu de informar a pasta em todos os lugares que requer o arquivo, um erro comum quem usa Directory.
Lembre-se, o array não contém o path.
Araújo escreveu:Estou desenvolvendo uma rotina de backup/restore usando as funções hb_ZipFile() e hb_UnzipFile(). Encontrei dificuldades na compilação, mas já consegui superá-las com ajuda aqui do fórum (viewtopic.php?f=4&t=19788). O arquivo .zip está sendo gerado sem problemas, mas para o procedimento de descompactação com a função hb_UnzipFile() não consigo êxito. Esta função sempre retorna .F.....
Eric, você está certo!..
Faltou adicionar a variável cPathBkp ao arquivo .zip selecionado!... Neste trecho:

Código: Selecionar todos

   
 cFileRestore:=cPathBkp+aFilesBkp[nFileRestore,F_NAME]
 aExtract := hb_GetFilesInZip( cFileRestore )


Com isso a função hb_GetFilesInZip() passou a apresentar a lista dos arquivos para aExtract.

Obrigado pela dica!...
clauberromao
Usuário Nível 1
Usuário Nível 1
Mensagens: 24
Registrado em: 17 Mai 2018 19:54
Localização: sobral/ceara

hb_UnzipFile() sempre retornar .F.

Mensagem por clauberromao »

eu nao consigo compilar com essa lib adicionadao ao meu arquivo .bc, o que fazer ??
Responder