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 01-05-2013
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Descomprimir un archivo gzip con Delphi

Hola:

Buscando una forma limpia(1) de comprimir / descomprimir un archivo -si puede ser más de uno mejor, pero no imprescindible- he encontrado este post de Seaone, que realiza la primera parte: La compresión.

Quizá sea "sencillo", pero ¿cómo podría implementar la función inversa?

Decir por último que uso Delphi 7.

Muchas gracias de antemano.

(1) Limpia:
.- Sin dll externas, tal como ocurre con 7-zip
.- Sin requerir componentes extras, como abrevia, jcl, ...
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #2  
Antiguo 07-05-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El no requerir bibliotecas externas lo veo complicado. De todas formas, el algoritmo de descompresión que usa gzip es libre de patentes (bueno, y su compresión también desde hace pocos años, si no recuerdo mal) así que siempre puedes escribirlo tu.

Free Pascal incluye compresión y descompresión de corrientes (TStream) con algoritmo gzip. Creo que usa bibliotecas externas, pero no estoy del todo seguro, y nada te impide echarle un ojo a su código fuente que puedes descargar desde aquí. Concretamente en ./packages/paszlib/src/zstream.pp. Con suerte puede que compile en Delphi sin (muchos) cambios, aunque te prevengo de que tiene bastantes dependencias.

Ah, y recuerda que gzip únicamente comprime los datos, no empaqueta ficheros. Para empaquetar ficheros se usa, normalmente, TAR. Free Pascal también incluye la creación de archivos TAR vía corrientes. Busca ./packages/fcl-base/src/libtar.pp.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 07-05-2013 a las 20:26:51.
Responder Con Cita
  #3  
Antiguo 09-05-2013
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Smile

Hola:

Muchas gracias por tus comentarios.

Cuando hablaba de bibliotecas externas, me refería a dll,s que tuvieran que acompañar al ejecutable en la instalación; pero evidentemente no me propongo reinventar la rueda

En la función que Seaone propone para comprimir en formato gzip utiliza zlib, y sería utilizando zlib o similar como pretendo realizar la descompresión.

He encontrado esta interfaz de zlib para Delphi que incluye ZLibExGZ.pas, aunque aún no he tenido tiempo para probarlo, me parece que puede resolver mi problema.

Un saludo.
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #4  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Desde Delphi XE2 lo puedes hacer sin bibliotecas externas al ejecutable. Básicamente enlaza archivos .obj que pertenecen a la biblioteca ZLib.

Agrego: Supongo que no sería muy complicado adaptar las unidades System.Zip y System.ZLib de XE2 a Delphi 7.

Última edición por Al González fecha: 09-05-2013 a las 20:41:54.
Responder Con Cita
  #5  
Antiguo 09-05-2013
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Muchas gracias, pero tal como decía al principio uso Delphi 7
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #6  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Me quedé pensando en esta idea:
Cita:
Empezado por Al González Ver Mensaje
Agrego: Supongo que no sería muy complicado adaptar las unidades System.Zip y System.ZLib de XE2 a Delphi 7.
¿Creen que valdría la pena intentarlo?
Responder Con Cita
  #7  
Antiguo 09-05-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Al González,

Cita:
Empezado por Al González
...no sería muy complicado adaptar las unidades System.Zip y System.ZLib de XE2 a Delphi 7...¿Creen que valdría la pena intentarlo?...
Definitivamente si

Nelson.
Responder Con Cita
  #8  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por nlsgarcia Ver Mensaje
Definitivamente si
Pues algo más para la agenda del bibliotecario, a ver qué logro conseguir...
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
descomprimir archivo mjjj Varios 2 22-07-2008 17:06:34
Descomprimir archivo rar Tal API de Windows 6 16-04-2008 01:26:54
descomprimir archivos diniremix Varios 2 15-05-2006 18:35:46
codigo para descomprimir un archivo .zip JAI_ME Varios 4 30-01-2006 17:37:08
libreria gzip.dll locotenentul Varios 3 14-09-2005 18:23:02


La franja horaria es GMT +2. Ahora son las 15:33:13.


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