 Enviado por Luis Mara Guayn en Viernes, 04 Agosto, 2006	
 En este artculo vamos a conocer un componente ActiveX freeware que puede comprimir/descomprimir facilmente un archivo o carpeta con una sola lnea de cdigo. Su nombre es "Zip Component" de Belus Technology Inc.

Conociendo Zip Component

 Por Luis Mara Guayn, Tucumn, Argentina

Introduccin

Con esta utilidad se puede comprimir y descomprimir archivos y carpetas muy facilmente desde Visual FoxPro. A continuacin vamos a conocer los mtodos del componente y algunos ejemplos de uso con cdigo VFP.

El enlace para descargar este componente es el siguiente:

http://xstandard.com/page.asp?p=C9891D8A-5390-44ED-BC60-2267ED6763A7

Instalacin

Para su instalacin de debe copiar el archivo "XZip.dll" 
descargado en una carpeta (Ej: "C:\ZipComponent\")
y desde la consola de comandos (DOS), 
en el directorio creado, ejecutamos: "regsvr32 XZip.dll".

En el caso de querer desinstalar el componente,
ejecutamos desde la consola de comandos: "regsvr32 -u XZip.dll"

Mtodos

Estos son los mtodos y sus sintaxis:

Pack: Agrega un archivo o carpeta a un archivo ZIP. 
El nivel de compresin puede ser de 1 a 9. El valor por omisin es 6.

Pack(cRutaArchivo, cArchivoZip, lAlmacenaRuta, cNuevaRuta, nNivelCompresin)
UnPack: Extrae el contenido de un archivo ZIP de una carpeta.

UnPack(cArchivoZip, cRutaCarpeta, cPatron)
Delete: Elimina un archivo de un archivo ZIP.

Delete(cArchivo, sArchivoZip)
Move: Mueve o renombra un archivo en el archivo ZIP.

Move(cDeArchivo, cAArchivo, cArzhivoZip)
Contents: Recibe en un objeto la lista de archivos y carpetas de un archivo ZIP.

Contents(cArchivoZip)
El objeto Items recibido contiene las siguientes propiedades:

Count: Retorna la cantidad de miembros de la coleccin
Item: Retorna un miembro especfico de la coleccin.
La clase Item contiene las siguientes propiedades:

Name: Nombre del archivo
Date: Fecha ltima modificain
Path: Ruta relativa del archivo
Size: Tamao en bytes del archivo
Type: Tipo del item: 1=Carpeta y 2=Archivo
Propiedades

ErrorCode: Retorna el cdigo de error de la ltima operacin.

ErrorDescription: Retorna la descripcin del cdigo de error de la ltima operacin.

Version: Retorna la versin del producto.

Ejemplos en VFP

Veremos algunos ejemplos en cdigo de Visual FoxPro, y lo fcil de su uso:

Comprimir archivos:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Pack("C:\Prgs\Prog1.prg", "C:\Zips\Programas.zip")

loZip.Pack("C:\Prgs\Prog2.prg", "C:\Zips\Programas.zip")

loZip.Pack("C:\Prgs\Prog3.prg", "C:\Zips\Programas.zip")

loZip = NULL
Comprimir archivos con la ruta por omisin:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Pack("C:\Prgs\Prog1.prg", "C:\Zips\Programas.zip", .T.)

loZip = NULL
Comprimir archivos con una ruta especfica:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Pack("C:\Prgs\Prog1.prg", "C:\Zips\Programas.zip", .T., "VFP\Original")

loZip.Pack("C:\Prgs\Prog1.prg", "C:\Zips\Programas.zip", .T., "VFP\Copia")

loZip = NULL
Comprimir multiples archivos usando comodines:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Pack("C:\Prgs\*.prg", "C:\Zips\Programas.zip")

loZip = NULL
Descomprimiendo archivos:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.UnPack("C:\Zips\Programas.zip", "C:\Temp\")

loZip = NULL
Descomprimiendo archivos usando comodines:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.UnPack("C:\Zips\Programas.zip", "C:\Temp\", "*.prg")

loZip = NULL
Listar el contenido de un archivo ZIP:

loZip = CREATEOBJECT("XStandard.Zip")

loItems = loZip.Contents("C:\Zips\Programas.zip")

IF loZip.ErrorCode = 0

  FOR EACH lo IN loItems

    WITH lo

      ? .Name, .Size, .Path, .Date, IIF(.Type=1,"Dir","File")

    ENDWITH

  ENDFOR

ELSE

  MESSAGEBOX(loZip.ErrorDescription,16,"Error")

ENDIF

loItems = NULL

loZip = NULL
Remover un archivo de un archivo ZIP:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Delete("Prgs\Prog2.prg", "C:\Zips\Programas.zip")

loZip = NULL
Renombrar un archivo en un archivo ZIP:

loZip = CREATEOBJECT("XStandard.Zip")

loZip.Delete("Prgs\Prog3.prg", "Prgs\Prog99.prg", "C:\Zips\Programas.zip")

loZip = NULL
Conclusiones

Por su facilidad de uso y tratarse de un componente freeware que podemos incluir en nuestras aplicaciones sin ningn problema, esta utilidad seguramente cubrir las necesidades de muchos desarrolladores en Visual FoxPro al momento de comprimir informacin.

Hasta la prxima.

Luis Mara

