Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como comprimo un archivo!? (https://www.clubdelphi.com/foros/showthread.php?t=22657)

juliopag1 22-06-2005 17:23:15

Como comprimo un archivo!?
 
Necesito comprimir un archivo, pero quiero hacer el codigo claro en Delphi, para tratar de hacerlo mas pequeño posible. Me podrian decir de que forma lo podria hacer. A y que no sea utilizando WinZip ni WinRAR, se podria robar las extenciones para descomprimirlo, pero no me gustaria usar el programa, porque estaria en lo mismo. Quiero comprimirlo lo mas que se pueda.

Recomendable
- O un codigo, componentes, o Algoritmo

Thank's

ContraVeneno 22-06-2005 17:30:58

Checa la información en este hilo

Puedes usar la búsqueda en los foros para encontrar más información.

Enan0 22-06-2005 17:44:20

Che mira aca te paso el link de donde descargue el TZIP.. es una mazas y muy facil de usar!!


http://www.programmersheaven.com/zone2/cat56/2862.htm

o sino esta!!

http://www.geocities.com/siliconvalley/network/2114/zipbeta.html

juliopag1 22-06-2005 18:19:16

Me gustaria mas un codigo [Algo propio]
 
Me gustaria mas un codigo [Algo propio], que se pueda modificar de forma tal que pueda manejar el tamaño que va a tener el archivo. Quiero que sea very small.

Thank's

ContraVeneno 22-06-2005 18:30:55

Aquí hay un ejemplo sombre como comprimir archivos usando la dll cabinet el detalle es que esta in ingles :p

jachguate 22-06-2005 18:43:20

Cita:

Empezado por juliopag1
Me gustaria mas un codigo [Algo propio],

No entiendo.. queres Algo propio, pero queres que alguien mas te lo haga?? :confused:

juliopag1 22-06-2005 18:59:16

En realidad!
 
Cita:

Empezado por jachguate
No entiendo.. queres Algo propio, pero queres que alguien mas te lo haga?? :confused:

En realidad, lo que quiero que me den las herramientas, no se Ej: utiliza el comando X de tal manera y de hay yo parto.

Quiero hacerlo yo!

Enan0 22-06-2005 19:59:07

Che julito.. si te bajas eso que te dije, solo tenes que agregar el .pas en las llamdas. despues lo creas.. y bueno ... hay ejemplos.. pero si queres algo te paso.

Código:

Código Delphi [-]

 
 unit CompactRep;
 
 interface
 
 uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ExtCtrls,zip, registry, JRO_TLB;
 
 //unidad agregada!
........
 function TCompactarYreparar.Zipear: boolean;
 var Zip:TZip;
    ruta:String;
 begin
 TRY
    ruta:=LeerPath;
    reparar(ruta);
    if Not DirectoryExists(ruta + 'BackUp\') then
    CreateDir(ruta + 'BackUp\');
    Zip:=TZip.create(nil);
    zip.FileSpecList.Add(ruta + 'Base.mdb');
    zip.Filename:=ruta + 'BackUp\' + FormatDateTime('DDMM_hhmm',now)+'.ZIP';
    zip.Add;
    if FileExists(ruta + 'Base.mdb') then
    DeleteFile(ruta + 'Base.mdb');
    CopyFile(pchar(ruta + 'basenueva.mdb'),Pchar(ruta+'Base.mdb'),false);
    if FileExists(ruta+'basenueva.mdb') then
    DeleteFile(ruta+'basenueva.mdb');
    result:=TRUE;
 EXCEPT
    REsult:=FALSE
 END;
 end;

Este codigo lo que hace es zipear una base de datos la cual fue compactada por otro procedimiento..

Este otro agarra una lista de archivos y los zipea..
y tambien te paso la funcion que los dezipea!!

Código:

Código Delphi [-]

 Function zipear(FileName,RutaOrigen, RutaDestino:string;Lista:array of string):string;
 var zip1:tzip;
    i:integer;
 begin
  try
    zip1:=tzip.create(nil);
    i:=0;
    while lista[i]<>'' do
    begin
    zip1.FileSpecList.Add(RutaOrigen + lista[i]);
    i:=i+1;
    end;
 
    EscribirAuditoria('Comienza El Proceso de Zipeado: ' + FileName);
    zip1.Filename:=RutaDestino+FileName;
    zip1.ShowProgressDialog:=true;
    zip1.add;
    zipear:='correcto';
    EscribirAuditoria('Se Completo Correctamente: ' + filename);
  except
    zipear:='error';
    EscribirAuditoria('Se Produjo un Error Zipeando: ' + filename);
    EscribirAuditoria('Borrando el Archivo Zip: '+ FileName);
    DeleteFile(RutaDestino + FileName);
  end;
 end;
 
 {Funcion Que Realiza el desZipeado de los Archivos
 y devuelve el estado final del proceso}

 Function deszipear(FileName,RutaOrigen,RutaDestino:string):string;
 var zip1:tzip;
 begin
    try
    zip1:=tzip.create(nil);
    EscribirAuditoria('Comienza El Proceso de DesZipeado: ' + FileName);
    zip1.Filename :=RutaOrigen + FileName;
    zip1.ExtractPath:=RutaDestino;
    zip1.ShowProgressDialog:=false;
    zip1.Extract;
    deszipear:='correcto';
    EscribirAuditoria('Se Completo Correctamente: ' + filename);
    Escribirauditoria('Borrando El Archivo ZIP: ' +Filename);
    DeleteFile(RutaOrigen + FileName);
    except
    deszipear:='error';
    EscribirAuditoria('Se Produjo un Error DesZipeando: ' + filename);
    Escribirauditoria('Borrando Archivos Que Componen : ' +Filename);
    DeleteFile(RutaDestino + '*.*');
    EscribirAuditoria('Borrando el Archivo Zip: ' + FileName);
    DeleteFile(RutaOrigen + FileName);
    end;
 end;


jachguate 22-06-2005 20:15:06

Bien, entonces estos vínculos podrian serte útiles:

http://en.wikipedia.org/wiki/Compression_algorithm
http://www.gzip.org/zlib/rfc-deflate.html
http://www.gzip.org/deflate.html
http://www.gzip.org/algorithm.txt
http://www.programmersheaven.com/zone24/cat857/

Hasta luego.

;)

Enan0 22-06-2005 20:39:39

Ok me retracto no habia entendido tu pregunta.. lo que queres hacer es escribir tu propio metodo de compresion de archivos.
Si tenes tiempo y ganas de investigar, podes buscar sobre REDES NEURONALES ARTIFICIALES, en las cuales se tulizan estos modelos para la compresion de archvios.. (compresion de todo tipo de información)..

Delphius 23-06-2005 06:12:40

a lo mejor te sirve
 
Como dice Enan0, si quieres escribir tu propio algoritmo tal vez te resulte de muchísima utilidad bucar en google con estos términos:
  • Códigos de Huffman
  • LZ77
  • LZSS
  • LZRW1
  • LZ78
  • LZW
  • LZJH
Ahora, si no tienes mucha noción de esos algoritmos, te recomiendo revisar los links de esta búsqueda realizaba en google ;)

juliopag1 23-06-2005 14:03:02

Gracias
 
Me pondre a revisar!!

Thank's


La franja horaria es GMT +2. Ahora son las 18:41:51.

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