Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Comprimir con Zipmaster y subcarpetas

Hola a tod@s.

Normalmente uso Zipmaster para comprimir/descomprimir archivos pero ahora se me plantea la necesidad de comprimir una carpeta que tiene otras carpetas con archivos dentro. He estado echando un vistazo y hace tiempo había un post que se quedó inconcluso en el que Casimiro recomendaba activar la propiedad "AddRecurseDirs" pero nada, lo ejecuto, no da error pero tampoco crea el fichero. La situación es la siguiente:

Tengo estas carpetas:

C:\Carpeta\Carpeta1
C:\Carpeta\Carpeta2
C:\Carpeta\Carpeta3

cada una con sus archivos dentro.

Mi código sería:

Código Delphi [-]
    ZipMaster.ZipFileName := 'C:\TEMP\carpeta.zip';
    ZipMaster.FSpecArgs.Clear;
    ZipMaster.FSpecArgs.Add('C:\Carpeta\*.*');
    try
      ZipMaster.Add;
    except
      raise exception.Create( 'Error al comprimir los archivos.' );
    end;

Como comentaba, teniendo la propiedad "AddRecurseDirs" en True ejecuto esas líneas y no da error pero tampoco crea el fichero.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #2  
Antiguo 14-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hace años que no uso esto, pero en la documentación pone lo siguiente:

Cita:
How to Use and Store Relative Paths

1) Set the AddOptions to AddRecurseDirs and AddDirNames:
Código Delphi [-]
with ZipMaster1 do
AddOptions := AddOptions + [AddRecurseDirs, AddDirNames];
2) Add a file specification like *.* or *.pas or something like this:
Código Delphi [-]
ZipMaster1.FSpecArgs.Append( '*.*' );
3) Set the RootDir property to the desired base directory, Drive and Directory where the relative path should start.
Código Delphi [-]
ZipMaster1.RootDir :='C:\aBaseDir\AnotherBaseDir';
4) Now do an Add, and you should have the desired result. The Drive ID and Dirname of your base directory will not be stored in the archive.
Código Delphi [-]
ZipMaster1.Add;
NOTE: The reason that demo1 saves whole pathnames is because it's GUI design intentionally stores complete pathnames in the FSpecArgs.

Última edición por Casimiro Notevi fecha: 14-10-2014 a las 13:46:11.
Responder Con Cita
  #3  
Antiguo 14-10-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Estupendo, así si.

Gracias
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 14-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, es así, por ejemplo, si quieres añadir contraseña:
Primero 'limpias' y luego vas añadiendo las opciones que necesites:

Código Delphi [-]
Zip.AddOptions := [];
Zip.AddOptions := Zip.AddOptions + [AddEncrypt];
Responder Con Cita
  #5  
Antiguo 14-10-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Primero 'limpias' y luego vas añadiendo las opciones que necesites:
Claro... siempre primero hay que "limpiar la era"...

Gracias y saludos
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 29-10-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Excelente aporte Casimiro.
Decidí migrar desde ZipForge a ZipMaster y fue facilísimo gracias a tu ayuda.

Saludos
Responder Con Cita
  #7  
Antiguo 29-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias
Solamente seguí este sencillo tutorial
Responder Con Cita
  #8  
Antiguo 29-10-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Yo seguí el mismo tutorial y sólo con tu código logré dar en el clavo.

Un modesto aporte para quien le interese:
Si en la propiedad OnProgress de ZipMaster añadimos el siguiente código:

Código Delphi [-]
procedure TForm1.ZipMaster1Progress(Sender: TObject; Details: TZMProgressDetails);
begin
ProgressBar1.Position := Details.TotalPerCent;
Application.ProcessMessages;
end;

Podemos ver la progresión de la compresión del archivo o carpeta seleccionada, en un ProgressBar.

Saludos y muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comprimir con Zipmaster ulice Varios 9 15-01-2019 20:12:07
Listar carpetas y subcarpetas darkmir C++ Builder 20 10-12-2013 23:15:56
Comprimir Carpetas ZIPMASTER gersonmaba Varios 4 27-08-2010 17:22:11
Comprimir y descomprimir con ZipMaster Espartaco OOP 2 22-02-2007 12:45:27
Buscar archivos jpg en carpetas y subcarpetas!! JuanErasmo API de Windows 4 23-11-2006 17:41:49


La franja horaria es GMT +2. Ahora son las 19:17:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi