descomprimir archivo zip

descomprimir archivo zip

Postby surGom » Tue Jun 04, 2013 11:25 pm

Hola compañeros, hace años que tengo una función para comprimir los dbf y ftp para tener un backup. Nunca hice que el programa los descomprimiera, ahora necesito hacerlo pero no puedo hacerlo funcionar. Uso los ejemplos del blog de xBielsys.

probé primeramente con
Code: Select all  Expand view
FUNCTION descomprime()

                   
                if   hb_UnZipFile("k:\fivehme\prueba\archivo.zip")
                     ? "exito "
                else
                     ? "no"
                endif    

[code]

el resultado es no

y luego

[code] FUNCTION descomprime()

   LOCAL oDlg,nFiles,oText, cMsg, oMeter,nActual:=0
   LOCAL cFile :=  cGetfile("archivo(*.zip) |*.zip|","Seleccionar archivo")
   LOCAL lval := .t.
   LOCAL cDestino := cgetdir()

   
   nFiles:=Len(hb_GetFilesInZip(cFile))      


 
   DEFINE DIALOG oDlg FROM 1, 1 TO 10, 60 TITLE "Espere ejecutando recuperación de datos..."

   @ 0.5, 2  SAY oText VAR cMsg SIZE 180, 20 OF oDlg

   @ 2, 2 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 200, 20

   oDlg:bStart:={||lval:= hb_UnZipFile(cFile,{|cFile,nPos|oText:SetText('Descomprimiendo'+CRLF+cFile),;
                                                         nActual:=nPos/nFiles*100,oMeter:Set(nActual)},,,cDestino ),;
                          IF(lval,MsgInfo('Restauracion completada con éxito'+CRLF+CRLF,'Bielsys 2009'),;
                           MsgStop('No se han podido restaurar los datos')),;
                   oDlg:END()}      


   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL


el resultado también es negativo

El archivo que quiero descomprimir es el creado con la función hb_zipfile. Si uso el winrar los muestra perfectamente

utilizo xharbour 1.21 y bcc582

Gracias por su atención
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: descomprimir archivo zip

Postby Armando » Wed Jun 05, 2013 12:11 am

Surgom:

Yo utilizo este código con xHarbour y FW0810 y va bien.

Code: Select all  Expand view

/*
* -------------------------------------------------------------------------*
* -------------------------------------------------------------------------*
*/

FUNCTION Importar()
LOCAL aFiles
LOCAL aExtra    := {""}
LOCAL lStatus
LOCAL nVez  := 0

CursorWait()

aFiles := hb_GetFilesInZip(cZipFile)

FOR nVez := 1 TO LEN(aFiles)
    IF ALLTRIM(cFileExt(aFiles[nVez])) == "ETI"
        AADD(aExtra,aFiles[nVez])
    ENDIF
NEXT

lStatus := hb_UnZipFile(cZipFile,,(.T.),,cDirDest,aExtra,NIL)

IF lStatus
    MsgInfo("El archivo se importó exitosamente !",oApp:cAplicacion)
ENDIF
RETURN (.T.)
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3084
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: descomprimir archivo zip

Postby AIDA » Wed Jun 05, 2013 4:03 am

Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
AIDA
 
Posts: 877
Joined: Fri Jan 12, 2007 8:35 pm

Re: descomprimir archivo zip

Postby LuisPonce » Wed Jun 05, 2013 5:18 am

Aida

Yo también pase por lo mismo, y en el foro encontré respuestas, hice una pequeña variación que muestro y quedó así:

Descomprime(cFileZip,cPathDesempaque)


FUNCTION Descomprime(cFile,cPathDescarga)
LOCAL oDlg,nFiles,aFiles,oText, cMsg, oMeter,nActual:=0

DEFAULT cPathDescarga:="E:\"

IF FILE(cFIle)

aFiles:=hb_GetFilesInZip(cFile)
// aFiles:=hb_GetFilesInZip(cFile,.t.)
nFiles:=Len(hb_GetFilesInZip(cFile)) // yo hice esta variacion que quite el .t. y desempaca en cPathDescarga


DEFINE DIALOG oDlg FROM 1, 1 TO 10, 60 TITLE "Espere ejecutando recuperación de datos..."
@ 0.5, 2 SAY oText VAR cMsg SIZE 180, 20 OF oDlg
@ 2, 2 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 200, 20
oDlg:bStart:={||lVal:=Hb_UnZipFile(cFile,{|cFile,nPos|oText:SetText("Descomprimiendo"+CRLF+cFile),;
nActual:=nPos/nFiles*100,oMeter:Set(nActual)},.T.,,cPathDescarga,aFiles,NIL ),;
IF(lVal,MsgInfo("Restauracion completada con éxito"+CRLF+CRLF,cVersion),;
MsgStop("No se han podido restaurar los datos")),;
oDlg:END()}

ACTIVATE DIALOG oDlg CENTERED

ENDIF

RETURN NIL


Ojo: en tu fichero de enlace agrega : hbzip.lib y zlib.lib
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: descomprimir archivo zip

Postby surGom » Wed Jun 05, 2013 12:08 pm

Gracias a todos funciona bien, hoy iba a probar con poner el array de los archivos comprimidos, me pareció que por ahí iba el problema y Uds me los confirmaron.


Otra vez muchas gracias

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 26 guests