Página 1 de 1

TZIP no se como hacerlo

Publicado: Mar Sep 19, 2017 1:08 pm
por XeviCOMAS
Resulta que lo que busco es hacer una copia de mis ficheros que estan en una carpeta
CarpetaA
FicheroA01
FicheroA02
CarpetaB1
FicheroB1
FicheroB2

El caso...
WITH OBJECT oZip := TZipFile():New()
:lRecurse := .T.

Guarda TODOS los archivos correctamente, PERO me pone el path completo de la ubicación de los archivos.
Así pues esta copia por ejemplo la guardaria en
CarpetaPrueba+CarpetaOtra+CarpetaA...
Lo que necesito es que guarde la ubicación, SI pero SOLO A PARTIR DE DESDE ESTOY HACIENDO LA COPIA. Vaya, como hace Winzip o cualquier compresor de archivos.
Lo que seria en la CarpetaA

(lIncludePath por defecto esta en .T.)
Si lIncludePath lo establezco a .f., los ficheros se guardan, pero sin carpetas contenedoras.


Para este menester, dispongo de un ZipArchive del 10/12/2012 que me está funcionando, PERO estaria correcto que el mismo Xailer funcionara de esta forma, no???

No se si me explico.


Un Saludo,
Xevi.

Re: TZIP no se como hacerlo

Publicado: Mar Sep 19, 2017 1:26 pm
por XeviCOMAS
Así pues...

Partimos de una carpeta en la raíz de C:
CarpetaNueva
en su contenido otra carpeta
CarpetaZip
y en su interior ficheros, carpetas...
Fichero1, Fichero2...

Bien lanzamos el Sample TestZip de Xailer, localizamos la CarpetaZip que queremos "empaquetar" y donde queremos que nos guarde el fichero zip resultante.
Comprime y visualizamos el resultado.
Resulta que no tenemos una
CarpetaZip y todos sus archivos y/o carpetas en su interior

sinó que tenemos una
CarpetaNueva
en su contenido otra carpeta
CarpetaZip
y en su interior ficheros, carpetas...
Fichero1, Fichero2...


Un Saludo,
Xevi.

Re: TZIP no se como hacerlo

Publicado: Mar Sep 19, 2017 4:01 pm
por XeviCOMAS
De momento, he añadido esto en la línea 175 del fichero ZipArchive.prg (de Xailer3.3.1)
quedando así...

cFile := SubStr( cFile, Len( FilePath(cPath) ) - 1 ) //Añadido
IF Empty( ::cPassword )
HB_ZipFileCreate( hZip, cFile, dDate, cTime, 0, nAttr,, ;
::nCompressionLevel )
ELSE
HB_ZipFileCreate( hZip, cFile, dDate, cTime, 0, nAttr,, ;
::nCompressionLevel, ::cPassword, hb_ZipFileCRC32( cFile ) )
ENDIF

Para lo que necesito, me funciona, pero no se si será "correcto" para demás menester.

Esperaré a que alguien se pronuncie!!!

Un Saludo,
Xevi.

Re: TZIP no se como hacerlo

Publicado: Mar Sep 19, 2017 5:27 pm
por XeviCOMAS
Sigo...

adjunto el TestZip con un "apaño"
A ver si voy bien por ahí, a mi me está funcionando.
Me baso en ZipArchive de la versión Xailer331 que es la que dispongo.
He añadido una DATA cPathSave a la clase TZIP, para que guarde o no TODA la ruta.

En el Sample hay un checkbox, que dependiendo de su marcado o no, hace que se guarde toda la ruta anterior a la carpeta a salvaguardar o solamente la carpeta y todos sus archivos y carpetas... Que es el comportamiento "normal" que creo deberia de ser.

Ahí lo dejo.
Esperando alguna opinión de alguno que entienda más.

Un Saludo,
Xevi.

Re: TZIP no se como hacerlo

Publicado: Jue Sep 21, 2017 11:02 am
por XeviCOMAS
Igual no me explico bien,
Resulta que si guardamos los archivos de la carpeta "MiCarpeta" que se encuentra en "C:\Prueba\Nueva\MiCarpeta" al guardar el zip , se guarda TODA LA RUTA RELATIVA, así pues, se crea una carpeta "Prueba", dentro de ella la carpeta "Nueva" y ya dentro la carpeta seleccionada a guardar.

No quiero hacerme pesado... pero una simple respuesta.
Es correcto el funcionamiento de la Clase TZIP, es como debe hacer, lo estamos mirando... no se, algo, no???

Un Saludo,
Xevi.

Re: TZIP no se como hacerlo

Publicado: Mar Sep 26, 2017 12:45 pm
por XeviCOMAS
¿?

:?

Un Saludo,
Xevi