FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 |
#2
|
|||
|
|||
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 |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
y no te sirve tal y como està montado en el programilla del WinSegu?? Eso funciona en 2k seguro
|
#5
|
|||
|
|||
¿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.
|
#6
|
||||
|
||||
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 |
#7
|
|||
|
|||
Cita:
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:
Cita:
|
|
|
|