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 23-10-2003
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Leer - comprimir - guardar

Estoy trabajando en la rutina de respaldo de una aplicación.

Quisiera poder leer el contenido de un directorio a un TStringList (o algo similar) y luego procesar c/u de los archivos con un componente Zlib (para comprimirlos en una carpeta temporal) y por ultimo copiarlos con un TFileOperation en el directorio de destino.

El problema es que no encuentro un componente que me permita facilmente leer los archivos de una carpeta (trate con TjvFileListBox pero no puedo accesar a la lista de archivos).

Agradecería cualquier información sobre que componente usar, o mejor uno que pueda hacer todo el trabajo (comprimir una lista de archivos o una carpeta y guardarlo como un archivo único +- como winzip).
__________________
Sitrico
Responder Con Cita
  #2  
Antiguo 23-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
En mi web tienes la solución a tus problemas

No, fuera coñas, en mi web puedes descargarte una utilería para des/comprimir archivos con la ZLib e incluso un visor para este tipo de archivos comprimidos. Es el WinZLB y el WinSegu y todo con código fuente para poder hacer las modificaciones que creas oportunas

Espero te sirva
Responder Con Cita
  #3  
Antiguo 23-10-2003
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Primero: Gracias

Bajé el WinZLB (y el componente ZLBArchive) que es exactamente lo que necesitaba.

Ahora, sigo con el problema de como leer los archivos de una carpeta, el componente TFolderBrowsea que encontré sólo es compatible con Windows 95-98 y necesito uno que no tenga problemas con 2K ni XP (hasta ahora para leer directorios he usado un TSearchRec y FindFirst y FindNext) pero debe haber algo mejor.
__________________
Sitrico
Responder Con Cita
  #4  
Antiguo 23-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
y no te sirve tal y como està montado en el programilla del WinSegu?? Eso funciona en 2k seguro
Responder Con Cita
  #5  
Antiguo 23-10-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
¿Has probado TFileListBox? Asociado a un TDirectoryListBox puedes hacer un navegador tal y como hago en mi LLCopy (ver sección descargas de mi webo). En mi LLBackup uso otro concepto: un TListBox asociado a un TDirectoryListBox. Prueba a ver si te sirve.
Responder Con Cita
  #6  
Antiguo 24-10-2003
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Lamentablemente el WinSegu no me sirve porque tendria q dejar al usuario seleccionar muchas opciones (carpetas, archivos, etc.)

Pero revizando el código fuente encontre algunas rutinas q me permiten completar la aplicación.

Me explico.

La aplicación está diseñada multiempresa, con un directorio base \Data para los datos comunes (y el archivo de empresas) y dentro de esa carpeta creo una sub-carpeta para c/u de la empresas \Data\emp01, \Data\Emp02...

Como la ruta de acceso a la carpeta se almacena en la base de datos de empresas lo q estoy haciendo es lo siguiente:

Primero leo los archivos de la carpeta en cuention

procedure TfRexi4200.AnadeArchivosDirec(Origen: string);
var
Files : integer;
Search : TSearchRec;
begin
ListaArchivos.Clear;
Files := FindFirst(Origen + '\*.*', faAnyFile, Search);
while Files = 0 do
begin
if Search.Attr <> faDirectory then
ListaArchivos.Add(Origen + '\' + Search.Name);
Files := FindNext(Search);
end;
FindClose(Search);
end;

Nota: Var ListaArchivos : tStringList

y luego

procedure TfRexi4200.RespaldarDatos(Archivo:String);
begin
if ListaArchivos.Count > 0 then
begin
Screen.Cursor := crHourGlass;
ZLB.CompressionLevel := fcMaximum; // el espacio es oro
ZLB.SavePaths := True;
if FileExists(Archivo) then
DeleteFile(Archivo); // Siempre es un respaldo nuevo
ZLB.CreateArchive(Archivo);
ZLB.AddFiles(ListaArchivos);
Screen.Cursor := crDefault;
End;
end;

(Cualquier parecido con WinSegu es pura coincidencia ;-) )

Como pueden ver he simplificado (demasiado) las rutinas para leer la carpeta y para generar el .ZLB

Ahora bien tengo 2 dudas:

1.- Como no he usado casi el ZLBArchive no sé si requiere de algun Try..except para manegar errores o try..finally para liberar
recursos.
2.- El ZLBArchiver puede separar el archivo generado en varios discos

PD: lo q si me gustaría hacer es agregar como un extra el WinZLB.exe, para poder recuperar datos de los respaldos en caso de emergencia, desde fuera de la aplicación.
__________________
Sitrico
Responder Con Cita
  #7  
Antiguo 24-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por sitrico
1.- Como no he usado casi el ZLBArchive no sé si requiere de algun Try..except para manegar errores o try..finally para liberar
recursos.
Pues la utilización de Try..except..end o Try...finally...end nunca está de más. No obstante, si miras el código del ZLIBArchive verás que en él ya se protege el código.
Lo de liberar el objeto, no es necesario, ya que es un componente (no visual) que el propio formulario se encargará de destruir cuando él se destruya

Cita:
Posteado originalmente por sitrico
2.- El ZLBArchiver puede separar el archivo generado en varios discos
No lo se, pero... así y hablando rápido (es decir, sin probarlo), no lo creo

Cita:
Posteado originalmente por sitrico
PD: lo q si me gustaría hacer es agregar como un extra el WinZLB.exe, para poder recuperar datos de los respaldos en caso de emergencia, desde fuera de la aplicación. [/b]
Por eso no hay problema (siempre que conserve mis derechos de autor )
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 21:31:44.


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