Ver Mensaje Individual
  #8  
Antiguo 16-07-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Hola escafandra.
.....
¿ Se te ocurre algún modo ? Por que de esa forma es muchísimo más simple.
Si, La cabecera debe empezar con un WORD que contiene el tamaño de la misma. Inmediatamente un DWORD que contiene el tamaño del archivo y seguidamente un array de CHAR que contiene el nombre. Detras viene el archivo binario. Esto se repita por cada archivo.

Para recuperarlo leemos le primer WORD (2 Bytes) y tras elle leemos la cantidad de Bytes del resto de esa cabecera. El primer DWORD (4 Bytes) sabemos que es el tamaño del archivo, Sabemos la longitud del FileName restando el tamaño de la cabecera menos 6. Ya solo queda leer el archivo cuyo tamaño conocemos... Repetimos...

Si el tamaño de algún archivo es mayor de 4Gb podemos guardarlo en in int64 en vez de en un DWORD.
Podemos simplificarlo algo si reservamos un espacio fijo en la cabecera para el nombre de archivo, en ese caso sobra guardar el tamaño de la cabecera pues siempre será el mismo y conocido. Pero si queremos guardar el Path entero este ultimo sistema desaprovecha espacio.

No tengo un delphi a mano, no puedo realizar un ejemplo, pero deciros que algo similar ya implementé en C hace tiempo.

Saludos.


PD me voy de vacaciones y no podré seguir el hilo...

Última edición por escafandra fecha: 16-07-2011 a las 17:27:47.
Responder Con Cita