8 de agosto de 2006

Conociendo Zip Component

En este artículo vamos a conocer un componente ActiveX freeware que puede comprimir / descomprimir fácilmente un archivo o carpeta con una sola línea de código. Su nombre es "Zip Component" de Belus Technology Inc.

Introducción

Con esta utilidad se puede comprimir y descomprimir archivos y carpetas muy facilmente desde Visual FoxPro. A continuación vamos a conocer los métodos del componente y algunos ejemplos de uso con código VFP.

El enlace para descargar este componente es el siguiente:

https://web.archive.org/web/20200214062545/http://xstandard.com/en/downloads/?product=zip

Instalación

Para su instalación 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"

Métodos

Estos son los métodos y sus sintaxis:

Pack: Agrega un archivo o carpeta a un archivo ZIP. El nivel de compresión puede ser de 1 a 9. El valor por omisión es 6.
Pack(cRutaArchivo, cArchivoZip, lAlmacenaRuta, cNuevaRuta, nNivelCompresión)
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 colección
  • Item: Retorna un miembro específico de la colección.
La clase Item contiene las siguientes propiedades:
  • Name: Nombre del archivo
  • Date: Fecha última modificaión
  • Path: Ruta relativa del archivo
  • Size: Tamaño en bytes del archivo
  • Type: Tipo del item: 1=Carpeta y 2=Archivo

Propiedades

ErrorCode: Retorna el código de error de la última operación.
ErrorDescription: Retorna la descripción del código de error de la última operación.
Version: Retorna la versión del producto.

Ejemplos en VFP

Veremos algunos ejemplos en código de Visual FoxPro, y lo fácil 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 omisión:
loZip = CREATEOBJECT("XStandard.Zip")
loZip.Pack("C:\Prgs\Prog1.prg", "C:\Zips\Programas.zip", .T.)
loZip = NULL
Comprimir archivos con una ruta específica:
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 ningún problema, esta utilidad seguramente cubrirá las necesidades de muchos desarrolladores en Visual FoxPro al momento de comprimir información.

Hasta la próxima.

Luis María

3 comentarios :

  1. no puedo descomprimir un archivo .zip que contenga una carpeta que debo hacer Gracias de antemano

    ResponderBorrar
  2. se puede comprimir y descomprimir usando el loZip = CREATEOBJECT("XStandard.Zip") con contraseña

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.