Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Donde encontrar componentes de compresion de archivos free
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Donde encontrar componentes de compresion de archivos free Responder citando

Wenas, alguien sabe donde puedo encontrar algun componente de compresion, la idea es hacer copias de seguridad en formato comprimido, es decir, guardarlas por ejemplo en un zip, se que hay un componente llamado Zip Builder o algo parecido pero no se donde encontrarlo, si alguien sabe donde encontrar este componente o algun otro que me pueda servir agradeceria la ayuda.

Gracias a todos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Comprimir Responder citando

En el hilo Como comprimir archivos planos(.txt) con mi aplicacion...., hay un enlace facilitado por Leo a una utilidad freeware: ZIP & OGG

Yo lo he probado y va bastante bien. Sólo hay que estrujarse un poco el cerebro para dejar el código adaptado a tus necesidades.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Angel :

Ya habia visto esa repuesta en el foro, me puedes ayudar un plis mas, como se instalan los componentes Zip & OGG Embarassed , la verdad es q no he instalando muxos componentes, bueno, los ultimos fueron los de LMD-Tools, creo que se llaman asi, que son bastante interesantes.

Gracias de antemano, un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

No se trata de componentes a isntalar, como las LMD Tools. El enlace de Zipp & Ogg donde te lleva es a una web. En ella puedes descargarte un fichero (zipogg.zip) que al descomprimirlo te monta un conjunto de carpetas:
    compres
    ogtest
    zformat
    zipdrop
    ziptest

Lo que hay en ellas es código puro de C++, que puedes usar llámandolo como funciones externas. Dentro de la carpeta ziptest hay un proyecto ziptest.bpr que hace todas las funciones; yo no lo he probado entero, pero hasta donde le he hecho (compilando y ejecutando) va de miedo.

De momento lo tengo aparcado porque tengo otra aplicación más urgente entre manos, pero me hace falta para mandar por correo electrónico unos ficheros de facturación de recibos por banco que pueden llegara aocupar más de 3 Mbytes.

Espero que te haya servido de algo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Hello Angel Responder citando

Hola Angel:

Toy un poco Confused (ido) con el tema de la compresion, de todas formas segiure investigando su funcionamiento Sad , pero bueno, si alguien tiene algun ejemplo o me puede ayudar me haria un peaso de favor.

Muxas gracias de antemano.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Ese fichero "Zipp & Ogg" realmente lo que lleva sion fuciones que se pueden incluir en cualquier proyecto.

Ya lo sé: que lo explique, pero es que yo sólo he hecho una prueba incluyendo esas definiciones en un proyecto, que encima se me ha perdido. Buscaré este fin de semana donde demonios lo he metido.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola,
Estube mirando el codigo y a primera vista asusta. Lo volvi a mirar... y sigue asustando Laughing
Asi que me concentré en el test olvidando lo que hara detras.
Intenté hacer un ejemplo simple que solo comprima un archivo.
Código:
#include <vcl.h>
#pragma hdrstop

#include "frmMain.h"
#include "zip.h"
//#include "unzip.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "zip.obj"
//#pragma link "unzip.obj"
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  HANDLE hf;
  HZIP hz;

  // (1) create a zip file directly
  hz = CreateZip("test.zip", 0,ZIP_FILENAME);
  ZipAdd(hz,"file.dat", "Document de test.txt",0,ZIP_FILENAME);

  CloseZip(hz);
}

Al compilar me da los siguientes errores:
[Lieur Erreur] Unresolved external 'ZipAdd(void *, const char *, void *, unsigned int, unsigned long)' referenced from C:\PROJECTS\TEST\ZIP\FRMMAIN.OBJ
[Lieur Erreur] Unresolved external 'CloseZipZ(void *)' referenced from C:\PROJECTS\TEST\ZIP\FRMMAIN.OBJ


Agregando la unzip.h me da dos errores mas:
[Lieur Erreur] Unresolved external 'IsZipHandleU(void *)' referenced from C:\PROJECTS\TEST\ZIP\FRMMAIN.OBJ
[Lieur Erreur] Unresolved external 'CloseZipU(void *)' referenced from C:\PROJECTS\TEST\ZIP\FRMMAIN.OBJ


No se si es debido a un error al convertir el codigo a BCB 6.0.
Alguien logro hacer andar un proyecto con estas fuentes?

saludos
diego


Ultima edición por el diego el Lun 04 Ago, 2003 9:23 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Prueba quitando la siguiente línea tanto del zip.cpp como del unzip.cpp:

  #define STRICT
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Una pequeña prueba para dar ideas...



#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
#pragma link "zip.obj"
#pragma link "unzip.obj"
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

// OpenDialog1->Title = "Delete File";
if (OpenDialog1->Execute())
{
if (FileExists(OpenDialog1->FileName))
fileto=OpenDialog1->FileName;
file= ChangeFileExt(OpenDialog1->FileName,"");
filezip=file + ".zip";
}

HZIP hz;

// Crea el fichero zip
hz = CreateZip(filezip.c_str(), 0,ZIP_FILENAME);
ZipAdd(hz,fileto.c_str(),fileto.c_str(),0,ZIP_FILENAME);

CloseZip(hz);
}
//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include "unzip.h"
#include "zip.h"
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Dialogs.hpp>
#include <ExtDlgs.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TOpenDialog *OpenDialog1;
void __fastcall Button1Click(TObject *Sender);

private: // User declarations
public: // User declarations

AnsiString file;
AnsiString filezip;
AnsiString fileto;

__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


Un saludo y que sirva para sacar nuevas conclusiones.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Leo:
Sin el #define STRICT funciona a la perfeccion. Para que sirve esa linea?

Manuel:
El ejemplo esta bien pero encuentro un problema que no comprendo. El problema se produce en la linea del ZippAdd:
ZipAdd(hz,fileto.c_str(),fileto.c_str(),0,ZIP_FILENAME);

El archivo lo comprime y el tamaño del .zip es correcto (o sea, que deberia tener algo dentro). Pero al abrirlo no veo nada. Con mi ejemplo anda bien. Probé agregando una segunda variable para diferenciar el nombre el archivo a agregar en el zip y el nombre con el que sera guardado pero nada cambia:
ZipAdd(hz,fileto2.c_str(),fileto.c_str(),0,ZIP_FILENAME);

Nota: Intente abrirlo con el winrar y en lugar de ver un archivo se ve una carpeta "\"
saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bueno. Continué haciendo algunas pruebas y comprobé, felizmente, que a pesar de que el archivo comprimido no es visible al abrirlo (con alguna aplicacion), al descomprimirlo (por codigo) funciona bien:

Código:
void __fastcall TForm1::bt_UnZipClick(TObject *Sender)
{

HZIP hz;
AnsiString filezip;

if (OpenDialog1->Execute())
   {
   if (FileExists(OpenDialog1->FileName))
   Screen->Cursor = crHourGlass;

   filezip = OpenDialog1->FileName;

   hz = OpenZip(filezip.c_str(),0,ZIP_FILENAME);
   ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
   for (int i=0; i<numitems; i++)
       { GetZipItem(hz,i,&ze);
       UnzipItem(hz,i, ze.name,0,ZIP_FILENAME);
       }
   CloseZip(hz);
   Screen->Cursor = crDefault;
  }
}

Es decir. El archivo comprimido en el interior del test.zip no es visible desde el winrar o el visor de .zip del XP, pero este esta almacenado (eso lo sospechaba al ver el tamaño del .zip), y al descomrpimirlo utilizando el codigo el archivo nos vuelve sano y salvo.
El unico problema es que si erchivo comprimido es para distribuirlo continuaria el problema de que expliqué en el mensaje anterior.

saludos
diego
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cita:
Sin el #define STRICT funciona a la perfeccion. Para que sirve esa linea?

Cambia la forma en que se declaran algunos tipos de Windows para asegurar que no pasas un tipo cuando se espera otro.

El problema es que en C++ si mezclas módulos donde usas STRICT con otros donde no lo usas no funcionará correctamente.

Así que otra forma de solucionar el problema podría ser, en vez de quitar la línea "#define STRICT" de "unzip.cpp" y "zip.cpp" ponerla también antes de la cabecera "vcl.h".

Cita:
El archivo lo comprime y el tamaño del .zip es correcto (o sea, que deberia tener algo dentro). Pero al abrirlo no veo nada.

A mi se me ve correctamente tanto usando el visor ZIP del Windows XP, como con el WinZip, el WinAce y el WinRar.

Más información:
    Using STRICT...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Leo, es rarisimo. Instalé el Winzip (v8.1) para probar y lo veo perfectamente. Con el winRar (v3.1) y el visualizador de XP no.
Gracias por la info..

saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: ¡¡¡ FUNCIONA !!! Responder citando

Wenas a todos,

Funciona perfectamente, tanto a la hora de comprimir como al descomprimir, el unico pero Sad que me he encontrado es que al descomprimir me lo hace con el atributo de solo lectura en los ficheros, el codigo parte es el de "el Diego", ¿alguien sabe como hay que ponerlo para que no los descomprima como solo lectura?

Un saludo a todos y gracias de antemano.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Cita:
...el unico pero que me he encontrado es que al descomprimir me lo hace con el atributo de solo lectura en los ficheros...

Creo que hay un error en la línea 3.744 del "unzip.cpp", al menos a mi al modificarla me funciona todo correctamente. O sea, he modificado lo siguiente:

  if (!uwriteable||wreadonly) ze->attr|=FILE_ATTRIBUTE_READONLY;

por:

  if (!uwriteable && wreadonly) ze->attr|=FILE_ATTRIBUTE_READONLY;

Para probarlo podéis crear un .ZIP donde mezcléis archivos con el atributo de solo lectura y sin el, veréis como al descomprimirlo pone los atributos como estaban originalmente al comprimir.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.