![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Creación de tipos de archivo
Hola a todos: En primer lugar, quiero pedir disculpas por si no estoy en el foro correcto. Y en segundo lugar, os explico cuál es mi problema: me gustaría compactar tres archivos (txt, rtf, ini) en un único archivo, con una extensión nueva, y, después, poder acceder a los archivos que contiene, claro. ¿Puede alguien darme una idea de por dónde empezar? He buscado en Google y no he encontrado nada. Gracias por adelantado.
|
|
#2
|
|||
|
|||
|
Aclaración
Bueno, antes he olvidado preguntar si es posible hacer eso. Gracias de nuevo.
|
|
#3
|
||||
|
||||
|
Puedes comprimirlo en un zip y extraerlo cuando lo vayas a necesitar, supongo que será eso lo que quieres, ¿no?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Hola Tortuguica.
Si lo creo posible. Es sencillo concatenar los tres archivos en un único archivo si se convierten todos a formato texto por ejemplo. Lo que se complica es la recuperación en el formato adecuado. Los archivos .txt e .ini podrías leerlos y trabajar directamente de archivo a memoria, pero con el .rtf tendrías que guardarlo en un archivo temporal para luego cargarlo con un RichEdit por ejemplo. Supongamos que el orden de agrupación es: .txt + .ini + .rtf Conociéndo con antelación la longitud en bytes (caracteres) de cada uno sería cosa de leer los N caracteres del txt, los N del .ini y los restantes corresponderán al .rtf Pero no sé si es eso lo que buscas hacer... ![]() Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#5
|
||||
|
||||
|
Basta con escribir una cabecera delante de cada archivo. Luego se escriben todos uno detrás de otro precedidos de su cabecera.
Su cabecera puede ser una estructura que contenga el tamaño de la misma, nombre del archivo y su longitud. Con esta estructura se pueden extraer los archivos uno detrás de otro sin importar el orden, tamaño, tipo ni número de los mismos. ![]() Saludos. |
|
#6
|
||||
|
||||
|
Hola escafandra.
Yo había pensado en eso, es más había probado este código y funciona bién: Pero luego me puse a pensar, ¿ Como encuentro despues la cabecera si un archivo contiene el identificador que uso para distinguirla ? Es decir como hacer para usar un identificador que sea diferente a cualquier combinación de caracteres posibles dentro de un archivo. Por eso luego pensé en obtener previamente el tamaño en bytes. ¿ Se te ocurre algún modo ? Por que de esa forma es muchísimo más simple. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 16-07-2011 a las 17:51:49. |
|
#7
|
|||
|
|||
|
Gracias a todos
Pues muchas gracias a todos. ¡Qué máquinas sois! :-) Un saludo.
|
|
#8
|
||||
|
||||
|
Cita:
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. |
|
#9
|
||||
|
||||
|
Cita:
Buenisimo, no se me había ocurrido... Gracias y que disfrutes el descanso. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#10
|
|||
|
|||
|
Gracias, escafandra y ecfisa. Perdón por mi escueto agradecimiento de antes, pero venía de la playa y estaba rendido :-/ Voy a ver cómo me sale la propuesta de escafandra. Un saludo a los dos.
|
|
#11
|
|||
|
|||
|
Ah, y gracias también a ti, Casimiro Notevi, claro (la playa me ha matao la buena educación). Pero lo que estaba buscando es lo que han sugerido escafandra y ecfisa. Más saludos para todos.
|
|
#12
|
||||
|
||||
|
Ya nos contarás
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#13
|
|||
|
|||
|
Ya os puedo contar: al final, no lo he hecho como decíais... porque no tengo muy claro lo de la escritura y lectura de archivos binarios :-( Pero, y esta es la parte positiva, me habéis dado una idea. Ahora lo guardo todo en un archivo con la longitud de cada parte (rtf, txt, ini) al principio de cada una de ellas. Después recupero cada parte, la transformo en un archivo temporal conveniente, lo utilizo y me lo cargo. Es un poco primario, pero eficiente. Prometo estudiar un poco más de Delphi para no tener que volver a recurrir a cutreríos como el que he hecho. Gracias de nuevo a todos por vuestro interés. Un saludo.
|
|
#14
|
||||
|
||||
|
Yo mejor utilizaria por ejemplo algo como ZipForge. Usando este componente creo un Zip, meto cada uno de los archivos en un Zip y ya esta. Incluso le puedo poner hasta contraseña al Zip para que nadie los pueda extraer. Luego a la hora de revertir el proceso leo el Zip, extraigo los archivo y los utilizo. No seria mala idea verdad?
|
|
#15
|
|||
|
|||
|
Pues no parece mala, no, fide_uci. Lo que pasa es que, en principio, no quiero recurrir a otras aplicaciones... Pero lo estudiaré, desde luego. Gracias por la idea. Un saludo.
|
|
#16
|
|||
|
|||
|
Uy, fide_uci, me parece que acabo de meter la pata :-O Me he dado cuenta que dices que ZipForge es un componente. Se me ha ido el santo al cielo y he relacionado ZipForge con una aplicación tipo WinZip. Es que sigo estando un poco verde de más, lo siento :-( Bueno, y este componente, ¿de dónde lo saco?
|
|
#17
|
||||
|
||||
|
Bueno, hasta donde se en internet hay una version gratis, que lo unico que hace es ponterte un molesto cartelito cuando esta iniciando Delphi pero bueno no te afecta en nada a tu aplicacion. Puedes hacer una busqueda en google "ZipForge + Delphi" o algo parecido y bajarte el componente. Saludos.
|
|
#18
|
||||
|
||||
|
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Hora de creación de archivo | Belaix | Varios | 2 | 15-11-2008 21:13:53 |
| Cambiando la fecha de creacion de un archivo | cascarrabias | Varios | 2 | 10-03-2008 18:24:48 |
| Asociar Aplicación y Tipos de Archivo | gaps2k | Varios | 1 | 10-04-2007 19:15:51 |
| Cómo filtrar por tipos de archivo en un componente ShellTreeView | MaMu | API de Windows | 3 | 14-08-2006 06:19:19 |
| Creacion de un archivo HTML... | JorgeBec | Varios | 2 | 30-07-2004 13:15:51 |
|