Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Comprimir archivos con turbo power abbrevia

Hola a todos, tengo un problema al comprimir archivos con abbrevia y es que al añadir los archivos al .zip me añade no solo los archivos sino todas las carpetas de la ruta que escribo.
El codigo no es exactamente este, pero como ejemplo vale:

Código Delphi [-]
 procedure TForm1.Button2Click(Sender: TObject);
 var
    AbZipKit: TAbZipKit;
  begin
    AbZipKit := TAbZipKit.Create(Self);
    try
      AbZipKit.FileName := 'c:\copia.zip';
      AbZipKit.StoreOptions := [soRecurse];
      abzipkit.CompressionMethodToUse:=smBestMethod;
      abzipkit.DeflationOption:=doMaximum ;
      AbZipKit.AddFiles(C:\Documents and Settings\Usuario\Mis documentos\config.ini, faAnyFile );
      AbZipKit.CloseArchive;
      AbZipKit.Save;
    finally
      AbZipKit.Free;
      showmessage('Operacion Completada');
    end;
  end;
Por si no me he explicado bien, lo que pasa es que añade el fichero config.ini pero dentro de las carpetas Documents and Settings\Usuario\Mis documentos.
Lo que quiero saber es como se puede hacer para que me añada el archivo pero sin las carpetas.

Gracias por adelantado por las posibles respuestas.

Última edición por dec fecha: 29-11-2005 a las 10:48:59. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 29-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bienvenido a estos Foros. Revisa, por favor, la guía de estilo de los mismos, porque, probablemente, te ayudará para sucesivas cuestiones que se te ocurra plantear. Respecto de tu pregunta, la "cosa" está en la línea:

Código Delphi [-]
AbZipKit.StoreOptions := [soRecurse];
¡Con ella estás indicando, precisamente, que se añadan al "Zip" las subcarpetas "recursivamente"!

Nota: Fíjate cómo he editado tu mensaje para encerrar el código Delphi entre las etiquetas [ DELPHI ] y [ /DELPHI ], para que, como puedes ver, el código se muestre debidamente formateado y aun algos más.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 29-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Muchas gracias, tienes razon ese era el fallo ya lo he cambiado.

Gracias por la ayuda.
Responder Con Cita
  #4  
Antiguo 29-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola de nuevo, acabo de darme cuenta que no he solucionado el problema porque habia puesto esa opcion para que me añadiese tambien las subcarpetas que hay dentro le la carpeta que quiero añadir.

Con otras opciones que he probado soluciono el 1ª problema que he planteado en este hilo pero no me añaden las subcarpetas que hay dentro de la que quiero añadir.

No se si me he explicado bien con tanta carpeta y subcartepa, espero que me entiendan.
Responder Con Cita
  #5  
Antiguo 29-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No entiendo bien el problema, puesto que, al principio no querías añadir las subcarpetas, y, entonces, sobraba la línea de código referida arriba, o, a lo menos, la opción "soRecurse". Pero, ahora, dices que quieres añadir las subcarpetas... con lo cual tendrías que añadir la opción que antes quitaste...

Intuyo que te estás refiriendo a cómo se descomprime el archivo "Zip", esto es, a que se "recree" el árbol de carpetas o no. Creo que en este caso la solución no está en las opciones de compresión, sino en las de descompresión. No estoy seguro ahora mismo, ni puedo mirarlo, pero, revisa las opciones de descompresión: es ahí donde puedes optar porque se "recree" el árbol de carpetas o no.

También puede ser que esté completamente equivocado con lo que vengo diciendo. Si es así mis disculpas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 29-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Gracias, lo mirare a ver si es eso.
Responder Con Cita
  #7  
Antiguo 30-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola, sigo teniendo un problema con abbrevia.

Voy a poner un ejemplo.
Quiero meter en un zip la carpeta que esta en esta ruta
Código:
C:\Documents and Settings\Usuario\Mis documentos\Mis eBooks
y para eso utilizo lo siguiente:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
 begin

       AbZipKit := TAbZipKit.Create(Self);
   try
     AbZipKit.FileName := 'C:\copia.zip';
     AbZipKit.StoreOptions := [soRecurse];
     abzipkit.CompressionMethodToUse:=smBestMethod;
     abzipkit.DeflationOption:=doNormal  ;
     AbZipKit.AddFiles('C:\Documents and Settings\Usuario\Mis documentos\Mis eBooks\*.*', faAnyFile );
     AbZipKit.CloseArchive;
     AbZipKit.Save;
   finally
     AbZipKit.Free;
   end;

 end;
La opcion soRecurse la pongo para que tambien añada al 'zip' las subcarpetas que hay dentro de mis ebooks y no solo los archivos.

Hasta aqui todo bien el problema viene que al abrir el zip me encuentro con todas las carpetas de la ruta, es decir , para llegar a Mis eBooks tengo que abrir Documents and Settings\usuario\etc...
Se que esto pasa por la opcion soRecurse pero si no la pongo y la carpeta que quiero añadir al ZIP tiene subcarpetas no me las añade.
He probado a combinarla con otras opciones o a poner otras y quitar esta pero el resultado no me sirve.

Creo que me he explicado mas o menos.
Lo que quiero es añadir una carpeta y sus correspondients subcarpetas y que al abrir el zip me salga directamente la carpeta y no que me cree las carpetas de la ruta y dentro la que he querido añadir.

Si lo que quiero es posible que alguien me lo diga y si no es asi que me lo diga tambien.

Gracias.
Responder Con Cita
  #8  
Antiguo 30-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Te explicas bien, quiero decir, que, comprendo lo que tratas de explicar. Sin embargo, haciendo alguna que otra prueba, pienso que el componente tiene algún problema en este sentido: he tratado de seguir la ayuda del componente para esto que nos ocupa, pero, o no doy en el clavo, o, como digo, hay un error de implementación en el propio componente, a lo menos, ya digo, en lo que nos ocupa. No se me ocurre qué decirte salvo esto... tal vez podrías contactar con quien desarrolla estos componentes por ver si pueden echarte una mano; es posible que sea un error, como te digo, y que esté ya para subsanarse o algo así... te deseo suerte, en todo caso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 30-11-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola

Gracias por la respuesta, con ella he confirmado lo que pensaba, que es un error del comoponente porque por mas que he mirado la ayuda no he visto nada para arreglarlo.

Intetare usar otra herramienta aunque esta a parte de este fallo me gustaba.

Si sabes de alguna herramienta parecida y que vaya bien te agradeceria que me la indicases.

Muchas gracias.
Responder Con Cita
  #10  
Antiguo 30-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues sí, sí que sé de otros componentes que funcionan bastante bien, pero, si no los mencioné antes es porque son gratuitos, en su versión "personal" (mira su licencia porque no sé hasta qué punto puedes usarlo en ciertas aplicaciones) y son los componentes ZipForge. Yo los he utilizado y no me fueron mal. De todos modos, a poco que busques en páginas como Torry's Delphi Pages encontrarás otros componentes para lo que te es menester: comprimir y descomprimir archivos Zip. También en estos Foros se ha tratado este tema y se han referido componentes para estos menesteres: busca en los foros por "comprimir archivos" y palabras-clave semejantes a ver si tienes suerte.

De todos modos, hombre, yo creo que no estaría demás que escribieras en el Foro de los componentes conque lo hemos intentado primeramente, porque, muy posiblemente obtengas respuestas a la cuestión que nos preocupa. No pierdes nada y es posible que logres una solución: por mucho que hallamos probado es posible que nos pasara inadvertida la solución. En fin, por probar, ya digo que no pierdes nada en absoluto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 01-12-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por casualidad... ¿has mirado los ejemplos que trae?.

Puede que encuentres algo interesante en ellos.
Responder Con Cita
  #12  
Antiguo 01-12-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola, si que he mirado en los ejemplos y no he visto nada para resolver este problema aunque puede haber algo y no me he dado cuenta.

Solo me queda esperar a ver si alguien del foro me orienta por el buen camino porque yo ya estoy harto de hacer pruebas y no obtener resultado.

Gracias por la sugerencia.

Un saludo.
Responder Con Cita
  #13  
Antiguo 01-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bien. No hay error alguno en el componente, a lo menos en cuanto a lo que nos ocupa respecta. Me precipité al pensarlo así, puesto que, aunque hize pruebas y demás, no había leído suficiente en la ayuda del método "AddFiles", concretamente, o no hize las suficientes pruebas. Lo siguiente consigue exactamente lo que planteas. Si lo pruebas verás cómo se comprimen todos los archivos, incluyendo los subdirectorios del directorio "Internet Explorer", sin que en el archivo "Zip" quede la ruta completa de dicho directorio, es decir, "C:\Archivos de programa\Internet Explorer\". De todos modos revisa la ayuda del componente, da más de sí, fijo.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  AbZipKit.StoreOptions := [soRecurse];
  AbZipKit.FileName := 'C:\archivo.zip';
  // Nos "situamos" en el directorio que vamos a comprimir
  AbZipKit.BaseDirectory := 'C:\Archivos de programa\Internet Explorer';
  AbZipKit.AddFiles('*.*', 0); // Y añadimos todos sus archivos
  AbZipKit.CloseArchive;
  AbZipKit.Save;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 01-12-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Como dice dec, esa es la forma de usarlo, indicando el directorio "base" en relación al cual se grabará.

Ejemplo de código en uno de mis programas:
Código:
  zip.FileName := cPath + cFicheroZip;
  zip.BaseDirectory := ExtractFilePath(ParamStr(0));
  zip.Password := cClaveEncriptar;
  zip.AutoSave := true;
  zip.AddFiles(cFichero,0);
  zip.AutoSave := False;
  zip.CloseArchive;
Por cierto, en los ejemplos y en la ayuda viene especificado.
Responder Con Cita
  #15  
Antiguo 02-12-2005
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola

Ahora si que va bien, muchas gracias por las respuestas y por el tiempo que os habeis tomado en buscarlas.

La verdad es que a veces la respuesta esta delante de las narices y no se ve, yo estaba empeñado en buscar la solucion en las opciones de busqueda y compresion pero bueno ya esta solucionado, cosa que os agradezco.


Un Saludo.
Responder Con Cita
  #16  
Antiguo 19-02-2008
solemno solemno is offline
Registrado
 
Registrado: feb 2008
Posts: 7
Poder: 0
solemno Va por buen camino
Discriminar carpetas a comprimir.

Primero pido disculpas por revivir un hilo tan viejo pero es que me ha servido muchisimo para empezar con abbrevia, y como mi pregunta es relacionada a este hilo......
Al grano:
Tengo en un formulario un GroupBox con 3 opciones:
  1. Hacer BackUp de la BD
  2. Hacer BackUp de la BD e Imágenes
  3. Hacer BackUp de la BD, Imágenes y Reportes
Uso para tal efecto un componente AbZipKit y sigo los paso arriba descriptos para comprimir los archivos con todos las subcarpetas y "todo eso".


Código Delphi [-]
     // Nos situamos en el directorio de la BD
    AbZipKit.BaseDirectory := ExtractFilePath(Application.ExeName)+'\BD';
    AbZipKit.AddFiles('*.*', 0); // Y añadimos todos sus archivos
    // Nos situamos en el directorio de las imagenes
    AbZipKit.BaseDirectory := ExtractFilePath(Application.ExeName)+'\Imgs';
    AbZipKit.AddFiles('*.*', 0); // Y añadimos todos sus archivos
    AbZipKit.CloseArchive;
    AbZipKit.Save
El Problema que me surje es que a la hora de "rescatar el BackUp" están todos los archivos mesclados.

Quiciera si alguien puede ayudarme hacer algo parecido a esto:



Código Delphi [-]
 AbZipKit.StoreOptions := [soRecurse];
// Nos situamos en el directorio de la aplicación
    AbZipKit.BaseDirectory := ExtractFilePath(Application.ExeName);
//en este punto me gustaria poder filtrar las carpetas a tener en cuenta
//a la hora de comprimirlas, por ejemplo: '\BD' + '\Imgs' + '\Reports' pero no se como.
//entonces en el archivo comprimido quedaría todo en su carpeta original
   AbZipKit.AddFiles('*.*', 0); // Y añadimos todos sus archivos  
   AbZipKit.CloseArchive;
   AbZipKit.Save;

Última edición por solemno fecha: 19-02-2008 a las 21:41:39.
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


La franja horaria es GMT +2. Ahora son las 23:10:22.


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