hb_UnZipFile con Harbour

hb_UnZipFile con Harbour

Postby Armando » Wed Oct 11, 2023 8:19 pm

Amigos:

Un ejemplo de hb_UnZipFile con Harbour?, por favor!

Code: Select all  Expand view  RUN

      IF ! hb_UnZipFile( cPathFile,,(.F.),,cDirGlb,aFilInZip)
         MsgStop("Falló la descompresión, posiblemente el archivo ZIP está dañado !",cAppName)
         RETURN(.F.)
      ENDIF
 


No me tira error pero el array cDirClb y aFilInZip me los devuelve vacios
Uso Harbour

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: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: hb_UnZipFile con Harbour

Postby Manuel Aranda » Wed Oct 11, 2023 8:58 pm

Hola Armando,

No sé si has mirado esto: viewtopic.php?f=6&t=43427&hilit=unzipfile

El mismo código me funciona también con harbour.
Un saludo,
Manuel

xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: hb_UnZipFile con Harbour

Postby Willi Quintana » Wed Oct 11, 2023 11:21 pm

Mi estimado
Code: Select all  Expand view  RUN

*cFile      archivo zip  
*cPass     password si lo tiene el zip
cFTem   := GetEnv("TMP") + "\"   ***ruta donde se desziperan los archivos
aFile := HB_GETFILESINZIP( cFile )            ***array con los archivos zipeados
If !HB_UNZIPFILE( cFile, , .t., cPass, cFTem, aFile)
Return(.f.)
EndIf
Return(.t.)
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: hb_UnZipFile con Harbour

Postby Armando » Thu Oct 12, 2023 3:02 am

Amigos:

Manuel ya había visto tu post, de ahi tome el ejemplo
Willi, gracias por tu código

Gracias a ambos por sus respuestas las he mirado pero tal vez tengo ceguera de taller
pues no logro el objetivo, pongo mi código que no me funciona por si encuentran mi error.
Code: Select all  Expand view  RUN

      // Determinamos cuantos y cuales archivos hay en el ZIP
      aFilInZip   := hb_GetFilesInZip(cPathFile,(.F.))
      ? aFilInZip                                                                                                 <== Aquí me muestra un valor de 1801
      // Descomprimimos el archivo ZIP
      IF ! hb_UnZipFile( cPathFile,,(.F.),,cDirGlb,aFilInZip,)                                                    <== cPathFile es correcto y cDirGlb existe
         MsgStop("Falló la descompresión, posiblemente el archivo ZIP está dañado !",cAppName)                    <== Este mensaje no aparece
         // Borramos el directorio
         lRmDir(cDirGlb)
         RETURN(.T.)
      ELSE
         aFilInDir         := Directory(cDirGlb + "*.Xml" )
         ? Len(aFilInDir)                                                                                         <== Aquí me muestra 0
      ENDIF
 


Muchas gracias por su tiempo
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: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: hb_UnZipFile con Harbour

Postby Antonio Linares » Thu Oct 12, 2023 3:26 am

Estimado Armando,

Prueba con:

Directory(cDirGlb + "\*.Xml" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: hb_UnZipFile con Harbour

Postby Armando » Thu Oct 12, 2023 3:36 am

Master Antonio:

Gracias por tu respuesta

? cDirGlb <==== C:\AppXmls\092023\

Como ves, ya incluye la última diagonal inversa.

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: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: hb_UnZipFile con Harbour

Postby karinha » Thu Oct 12, 2023 2:46 pm

Armando, muestre:

Code: Select all  Expand view  RUN

   cDirGlb
 


ó la FUNCTION completa, porfa.

https://forums.fivetechsupport.com/viewtopic.php?f=3&t=33637&start=0

PBACKUP para HARBOUR:

https://mega.nz/file/II9GTBLZ#h4aAe8VgDqbICFsLRu8lXI5xLH-YbTq3Z3ekImYvOFg

Armando: Compila perfecto con HARBOUR para BCC7.60.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: hb_UnZipFile con Harbour

Postby Armando » Thu Oct 12, 2023 4:31 pm

Amigos:

Encontré el problema, el código es correcto, el problema radica en que los ficheros
a extraer están en una carpeta y la carpeta dentro del ZIP y el código espera que los
ficheros formen el ZIP, espero haberme explicado.

FICHERO.ZIP
|
|-----> 092023 <===== esta es la carpeta (NO SIEMPRE ES EL MISMO NOMBRE)
|
|------> Fichero1.xml
|------> Fichero2.xml
|------> etc. etc.

Ahora como especifico que busque los ficheros dentro de la carpeta???

Gracias por su tiempo y paciencia

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: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: hb_UnZipFile con Harbour

Postby karinha » Fri Oct 13, 2023 5:08 pm

Armando, mira se ayuda:

Code: Select all  Expand view  RUN

// C:\FWH..\SAMPLES\UNZIP2.PRG simples teste. kapiabafwh@gmail.com

#include "FiveWin.ch"
#Include "Directry.ch"

#Define CLR_PINK       nRGB( 255, 128, 128 ) //-> Rosa. uiiii. kkkkkk
#Define CLR_NBLUE      nRGB( 128, 128, 192 )
#Define CLR_MSPURPLE   nRGB( 0,   120, 215 ) //-> Purpura.
#Define CLR_MSRED      nRGB( 232,  17,  35 )
#Define CLR_MSGRAY     nRGB( 229, 229, 229 )
#Define CLR_LGRAY      nRGB( 230, 230, 230 )

FUNCTION Main()

    MEMVAR cPRGPATH, cFILEPATH

    cPRGPATH := cFILEPATH(GETMODULEFILENAME(GETINSTANCE()))
    cPRGPATH := cShortName(cPRGPATH)  //-> Modified / Modificado al final

    XBACKUP()

    lCHDIR(cPRGPATH)

RETURN NIL

FUNCTION XBACKUP()

   LOCAL oDlg, oFont, cDest, cArqZip, aDir1, vPasta, X, nTotal
   LOCAL cTipo    := "1"
   // LOCAL cDestino := LEFT("C:\"+CurDir()+SPACE(100),100)
   LOCAL cDestino
   // archivos de Origen:
   // LOCAL cOrigem  := LEFT("C:\"+CurDir()+"\*.PRG"+SPACE(100),100)
   LOCAL cOrigem
   LOCAL cSenha := SPACE(10)
   LOCAL oBtn, oBtn2, oSaida, aGrad, oBrush1, oBrush2, aArq := {}
   LOCAL c_ExtArq:="zip"  //extensao do arquivo que sera criado
   LOCAL oCursorBtn := TCursor():New(, 'HAND' )

   // De onde pegar os arquivos:
   cOrigem  := Curdrive()+":\fwh1905\samples\*.PRG"
   cDestino := Curdrive()+":\backup\"  // "C:\BACKUP"

   // ? cDestino  // "
C:\BACKUP"  // donde guardar la copia

   IF .NOT. lIsdir( cDestino )
      LMkdir( cDestino )
   ENDIF

   SetBalloon( .T. )

   aGrad := { { 0.30, CLR_MSGRAY, CLR_MSPURPLE },{ 0.50, CLR_MSPURPLE, CLR_MSGRAY }, .F. }

   DEFINE BRUSH oBrush1 COLOR nRGB( 250, 213, 174 ) STYLE HORIZONTAL
   DEFINE BRUSH oBrush2 COLOR nRGB( 192, 192, 192 ) STYLE HORIZONTAL

   DEFINE FONT oFont NAME "
Ms Sans Serif" SIZE 00, -35 BOLD
                     
   DEFINE DIALOG oDlg TITLE "
FIVEWIN:- BACKUP - RESTORE -" SIZE 350, 350   ;
      PIXEL TRUEPIXEL RESIZABLE GRADIENT aGrad

   @ 050, 75 BTNBMP oBtn OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT   ;
      FILE "
..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil,         ;
           "
..\bitmaps\butt1upL.bmp"                                        ;
      FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "
&BACKUP" CENTER          ;
      ACTION ( cTipo := "
BACKUP", oDlg:End() )                              ;
      TOOLTIP "
Backup"

   oBtn:bClrGrad = {| lInvert | If( ! lInvert, ;
      { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
      { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
      { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
      { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }

   oBtn:nClrBorder := iif( oBtn:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
   oBtn:oCursor    := oCursorBtn

   @ 150, 75 BTNBMP oBtn2 OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT  ;
      FILE "
..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil,         ;
           "
..\bitmaps\butt1upL.bmp"                                        ;
      FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "
&RESTORE" CENTER         ;
      ACTION ( cTipo := "
RESTORE", oDlg:End() )                             ;
      TOOLTIP "
Restore"

   oBtn2:bClrGrad = {| lInvert | If( ! lInvert, ;
      { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
      { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
      { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
      { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }

   oBtn2:nClrBorder := iif( oBtn2:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
   oBtn2:oCursor    := oCursorBtn

   @ 250, 75 BTNBMP oSaida OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT ;
      FILE  "
..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil,        ;
            "
..\bitmaps\butt1upL.bmp"                                       ;
      FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "
&EXIT" CENTER            ;
      ACTION ( cTipo := "
SAIDA", oDlg:End() )                               ;
      TOOLTIP "
Exit/Salida"

   oSaida:bClrGrad = {| lInvert | If( ! lInvert, ;
      { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
      { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
      { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
      { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }

   oSaida:nClrBorder := iif( oSaida:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
   oSaida:oCursor    := oCursorBtn

   oSaida:lCancel := .T.

   ACTIVATE DIALOG oDlg CENTERED

   IF cTipo != "
SAIDA"

      ? "
Tipo: ", cTipo, cDestino, cOrigem

   ENDIF

   IF cTipo = "
RESTORE"

      cOrigem := Curdrive()+"
:\backup\BACKUP.ZIP"

   ENDIF

   IF .NOT. FILE( AllTrim( cOrigem ) )

      Alert( "
Arquivo: " + AllTrim( cOrigem ) + "; Nao encontrado(bakcup.zip)!" )

      RETURN NIL

   ENDIF

   IF Right( AllTrim( cDestino ), 1 ) != "
\"

      cDest := AllTrim( cDestino ) + "
\NUL"

      cArqZip := AllTrim( cDestino ) + "
\backup." + c_ExtArq

   ELSE

      cDest := AllTrim( cDestino ) + "
NUL"

      cArqZip := AllTrim( cDestino ) + "
backup." + c_ExtArq

   ENDIF

   IF .NOT. FILE( cDest )

      Alert( "
O Drive: " + AllTrim( cDestino ) + "; Nao encontrado!" )

      RETURN NIL

   ENDIF

   IF cTipo = "
BACKUP"  // BACKUP

      aArq := {}

      IF "
*" $ cOrigem

         aDir1 := Directory( AllTrim( cOrigem ) )

         vPasta := LEFT( cOrigem, RAt( "
\", cOrigem ) )

         FOR x = 1 TO Len( aDir1 )

            AAdd( aArq, vPasta + aDir1[ x, 1 ] )

         NEXT

      ELSE

         AAdd( aArq, AllTrim( cOrigem ) )

      ENDIF

      nTotal := Len( aArq )

      hb_zipfile( cArqZip, aArq, 9, {| cFile, nPos | eProgresso( cFile, nPos, nTotal ) }, .T., , , .F., .F., )

      ? "
Backup Listo"

   ELSE // RESTORE

      cDest := AllTrim( cDestino )

      IF Right( AllTrim( cDestino ), 1 ) != "
\"

         cDest += "
\"

      ENDIF

      aArq := hb_GetFilesInZip( AllTrim( cOrigem ) )

      nTotal := Len( aArq )

      hb_UnzipFile( AllTrim( cOrigem ), {| cFile, nPos | eProgresso( cFile, nPos, nTotal ) },,, cDest, aArq )

      ? "
Restore Listo"

   ENDIF

RETURN NIL

FUNCTION eProgresso(vtxt,xPerc,wTot)

   Local nPre:=(xPerc*100)/wTot, nBar:=(nPre*74)/100

   // Completar aqui depois...

RETURN NIL

/*
 *  SPN.PRG
 *
 *  cShortName() - FilePath Long to Short (GetShortPathNameA())
 *
 *  Soporte a Funciones del Api de Windows
 *
 *  Andrade A. Daniel - 2002
 *  Rosario, Argentina
 *
 *  Libre Distribución
 */

/*
 *  cShortName()
 */

FUNCTION cShortName( cLong )

    Local   cShort  := Space(164) + Chr(0)
    Local   nBuffer := 164
    Local   nLen

    nLen    := GetSPName( cLong, @cShort, nBuffer )

    cShort  := Left( cShort, nLen )

RETURN( cShort )

// Windows Api
DLL32 STATIC FUNCTION GetSPName( lpszLongPath AS STRING, lpszShortPath AS STRING, lBuffer AS LONG ) ;
      AS LONG PASCAL FROM "
GetShortPathNameA" LIB "kernel32"

// FIN / END


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: hb_UnZipFile con Harbour

Postby Antonio Linares » Fri Oct 13, 2023 5:43 pm

Estimado Armando,

Esto te da las subcarpetas:
aFilInDir := Directory( cDirGlb + "*.*", "D" )
? Len( aFilInDir ) // dinos que cantidad te aparece aqui

Ahora usa el segundo nombre, que debe ser la carpeta, como path:
aFilInDir := Directory( cDirGlb + aFilInDir[ 2 ] + "\", *.Xml" )
? Len( aFilInDir )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: hb_UnZipFile con Harbour

Postby Armando » Mon Oct 16, 2023 12:20 am

Master Antonio:

Hecho, muchas gracias.

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: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

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