descomprimir archivo zip

Post Reply
surGom
Posts: 624
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

descomprimir archivo zip

Post by surGom »

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

 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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: descomprimir archivo zip

Post by Armando »

Surgom:

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

Code: Select all

/*
* -------------------------------------------------------------------------*
* -------------------------------------------------------------------------*
*/
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
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: descomprimir archivo zip

Post by AIDA »

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

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: descomprimir archivo zip

Post by LuisPonce »

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
surGom
Posts: 624
Joined: Wed Oct 19, 2005 12:03 pm
Contact:

Re: descomprimir archivo zip

Post by surGom »

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
Post Reply