FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour hb_UnZipFile con Harbour
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
hb_UnZipFile con Harbour
Posted: Wed Oct 11, 2023 08:19 PM
Amigos:

Un ejemplo de hb_UnZipFile con Harbour?, por favor!
Code (fw): Select all Collapse
聽 聽 聽 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
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: hb_UnZipFile con Harbour
Posted: Wed Oct 11, 2023 08:58 PM
Hola Armando,

No s茅 si has mirado esto: https://forums.fivetechsupport.com/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
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: hb_UnZipFile con Harbour
Posted: Wed Oct 11, 2023 11:21 PM
Mi estimado
Code (fw): Select all Collapse
*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.)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: hb_UnZipFile con Harbour
Posted: Thu Oct 12, 2023 03: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 (fw): Select all Collapse
聽 聽 聽 // 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: hb_UnZipFile con Harbour
Posted: Thu Oct 12, 2023 03:26 AM

Estimado Armando,

Prueba con:

Directory(cDirGlb + "*.Xml" )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: hb_UnZipFile con Harbour
Posted: Thu Oct 12, 2023 03: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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: hb_UnZipFile con Harbour
Posted: Thu Oct 12, 2023 02:46 PM
Armando, muestre:
Code (fw): Select all Collapse
聽 聽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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: hb_UnZipFile con Harbour
Posted: Thu Oct 12, 2023 04: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

    |

 |-----&gt; 092023              &lt;===== esta es la carpeta (NO SIEMPRE ES EL MISMO NOMBRE)

               |

               |------&gt; Fichero1.xml

               |------&gt; Fichero2.xml

               |------&gt; 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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: hb_UnZipFile con Harbour
Posted: Fri Oct 13, 2023 05:08 PM
Armando, mira se ayuda:
Code (fw): Select all Collapse
// 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: hb_UnZipFile con Harbour
Posted: Fri Oct 13, 2023 05: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: hb_UnZipFile con Harbour
Posted: 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

Continue the discussion