Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   generar archivos rar o zip (https://www.clubdelphi.com/foros/showthread.php?t=57096)

johurgi 05-06-2008 08:45:42

generar archivos rar o zip
 
Hola a todos,

Estoy realizando en mi aplicacion un modulo que tiene que coger una carpeta y meterla en un archivo .rar o .zip. El problema es que no se como hacerlo. He probado con el componente de abbrevia, pero el tiempo que tarda en generar el fichero es demasiado elevado.

Agradeceria cualquier tipo de ayuda.

un saludo

duilioisola 05-06-2008 10:47:40

Con ShellExecute y el WinRAR instalado podrías hacerlo.
Yo utilizo esto en un .bat, pero podría servirte.

Código:

rem Esto mete dentro de Backup.rar el contenido completo de Carpeta, Carpeta2 y Carpeta3.
"C:\Archivos de programa\WinRAR\WinRAR.exe" a -r Backup.rar "C:\Carpeta\*.*"
"C:\Archivos de programa\WinRAR\WinRAR.exe" a -r Backup.rar "C:\Carpeta2\*.*"
"C:\Archivos de programa\WinRAR\WinRAR.exe" a -r Backup.rar "C:\Carpeta3\*.*"


johurgi 05-06-2008 10:50:42

esta opcion ya la habia contemplado, no me acaba de gustar por que cuando distribuya la aplicacion o instalo el winrar o nada de nada.

De todas formas gracias por tu respuesta.

duilioisola 05-06-2008 10:59:11

Mira esta página y esta otra .Hay un montón de componentes.

Mira también esta discusión... talvez el componente tenga alguna opción para comprimir más o menos y de eso dependa la velocidad.

johurgi 05-06-2008 11:23:15

Gracias por tu ayuda voy a probar con lo que he leido en el hilo y te comento.

johurgi 05-06-2008 15:14:03

con el codigo del hilo que me has dicho me ha funcionado perfectamente lo unico que le he cambiado una de las opciones para que me valla mas rapido.

Código Delphi [-]
deflationOption:=doSuperFast;

gracias por tu ayuda.

Un saludo.

Delfino 05-06-2008 20:07:10

Puedes hacerlo sin ningun componente externo pq Delphi tiene la unidad ZLib q puedes usar sus funciones para tal fin..

Faust 06-06-2008 01:04:55

Precisamente el lunes hice un programilla que respaldaba automáticamente unos datos y los guardaba en un zip, con opciones de insertar comentarios, contraseña y crear sfx, todo esto compatible con WinZip, usé unas unidades que tengo hace tiempo (ya ni me acuerdo de donde las saqué), pero no recuerdo si son freeware, de ser así las pongo por aquí, en cuanto a lo de la unidad ZLIB de Delphi, ya leí un poco y no doy como usarla.

BlueSteel 06-06-2008 04:51:14

Cita:

Empezado por Delfino (Mensaje 291583)
Puedes hacerlo sin ningun componente externo pq Delphi tiene la unidad ZLib q puedes usar sus funciones para tal fin..

podrias dar un ejemplo de como utilizar esta libreria....

Salu2:p:D

johurgi 06-06-2008 08:10:38

Danos algun tipo de ejemplo, ya que es otra opcion que no conocia, y seria muy interesante ver como funciona.

manolop 06-06-2008 09:11:19

yo utilzo el TZipmaster y este sería un ejemplo....

Código Delphi [-]
     Zip.Dll_Load;

      zip.FSpecArgs.Append('*.*');
   
     zip.RootDir:=directorio_proyecto;
     if fdestino<>'' then
       Zip.ZipFilename :=fdestino   //fichero q creara
  

     Zip.AddOptions := Zip.AddOptions + [AddRecurseDirs, AddDirNames];
         
     try
        Zip.Add;
     except
       on exception do
         begin
           Cursor:=crDefault;
           Application.MessageBox('Falló la compresión',PAnsiChar(Main.get_nombre_aplicacion),mb_iconError+mb_OK);
         end;
     end;
     Zip.Dll_Load;

Espero que te sirva, un saludo

johurgi 06-06-2008 09:20:08

el zipmaster es un componente gratuito???, y donde lo puedo conseguir??

manolop 06-06-2008 09:34:48

Es gratuito y lo tienes en

http://www.delphizip.org/index.html

Delfino 07-06-2008 07:57:44

Las funciones de la libreria hablan por si mismo, pero googleando encontre este ejemplo, q se puede personalizar..
Código Delphi [-]
 program ZLibTest;
{$APPTYPE CONSOLE}
uses SysUtils, Classes, ZLib;
var
  FileName: String;
  CompFileStream: TStream;
  CompressionStream: TCompressionStream;
  FileStream: TStream;
  DecompressionStream: TDecompressionStream;
  Buffer: Array[0..4095] of Char;
  BufLen: Integer;
begin
  if ParamCount < 1 then Halt;
  FileName := ParamStr(1);
  Write('Compressing ',FileName,' ... ');
  FileStream := TFileStream.Create(FileName,fmOpenRead OR fmShareDenyWrite);
  CompFileStream := TFileStream.Create(FileName+'.compress',fmCreate);
  CompressionStream := TCompressionStream.Create(clDefault,CompFileStream);
  CompressionStream.CopyFrom(FileStream,0);
  CompressionStream.Free;
  CompFileStream.Free;
  FileStream.Free;
  Writeln('Done');
  Write('Decompressing ',FileName,'.compress ... ');
  CompFileStream := TFileStream.Create(FileName+'.compress', fmOpenRead OR fmShareDenyWrite);
  FileStream := TFileStream.Create(FileName+'.uncompress', fmCreate);
  DecompressionStream := TDecompressionStream.Create(CompFileStream);
  BufLen := DecompressionStream.Read(Buffer,SizeOf(Buffer));
  while BufLen > 0 do
    begin
    FileStream.Write(Buffer,BufLen);
    BufLen := DecompressionStream.Read(Buffer,SizeOf(Buffer));
    end;
  DecompressionStream.Free;
  FileStream.Free;
  CompFileStream.Free;
  Writeln('Done');
  Readln;
end.

Faust 09-06-2008 17:44:31

De aquí se puede bajar el componente que vengo usando hace tiempo, hasta ahora no me ha dado problemas, pero hay muchos otros componentes más actuales y poderosos.

Olvidaba decir que es free.


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

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