FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Dividir archivos en un TFileStream
Hola , tengo este codigo :
Sirve para unir dos archivos en uno solo , queria saber como podia dividir el archivo final con los dos archivos para tener acceso al segundo archivo usado en la union , ¿ alguien conoce como hacerlo ? |
#2
|
||||
|
||||
En un caso general, no queda una "marca" que divida los dos archivos. Sin embargo, si conoces el tamaño del primero, podrías usar el método Seek del Stream para colocar el puntero al principio de lo que sería el segundo archivo y a partir de ahí copiar a otro Stream.
LineComment Saludos |
#3
|
||||
|
||||
Hola.
Tal como te comenta roman, si previamente no agregas una marca, vas a tener que enviar los nombres y tamaños de los archivos (bytes) a extraer, por ejemplo:
Llamada ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
|||
|
|||
hola , gracias por la ayuda a los dos , efcisa , una pregunta , el tamaño de los archivos en bytes seria lo mismo que "InStream.Size" , ¿ verdad ?
|
#5
|
||||
|
||||
Hola
Cita:
Deberías obtener y guardar esos valores de tamaño en algún sitio, por que desde el archivo compuesto, es imposible obtener los tamaños de los diferentes archivos agregados. De otro modo, habría que poner marcas para poder identificar la finalización de cada archivo. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
||||
|
||||
Cita:
El header debe contener en este orden: 0.Cantidad de archivos 1. Tamaño del archivo #1 2. Tamaño del archivo #2 ... N. Tamaño del archivo #N Luego viene la data del primer archivo, etc. Lo que debe de cuidarse es de leer la cantidad justa de bytes. Por eso debe definirse adecuadamente que tipo de dato se va a usar para almacenar esta información... ¿Cuántos archivos se tiene pensado poder concatenar? Para 255 solo es suficiente con leer un byte... pero si se necesita de más se debe usar un SmallInt por lo menos. Luego debe cuidarse también el tamaño de los archivos... Al menos las funciones que tiene Delphi y que actúan de indirección hacia la API de Windows, devuelven un Int64... ahí ya tienes unos cuantos bytes más por leer Asi que de pronto, mínimo necesitas: 1. Leer el primer byte para saber la cantidad de archivos // si vas a permitir más de 255 necesitas 2 o más bytes... tu pones el límite! 2. Leer los siguientes 8 bytes para saber el tamaño del archivo 3. Ir a la posición correspondiente y leer el buffer de ese mismo tamaño 4. Repetir 2-4 según cantidad de archivos Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Agregar archivos en un TFileStream | Ramsay | Varios | 4 | 19-09-2016 21:31:36 |
Ayuda con archivos binarios usando TFileStream | Eze32 | OOP | 2 | 04-06-2013 16:18:07 |
Manejo de Archivos con TFileStream | nlsgarcia | Varios | 6 | 02-09-2011 02:26:36 |
Uso de TFileStream | esocrates | Varios | 4 | 09-04-2005 23:47:17 |
¿Como dividir un archivo en varios archivos? | Raisen | Varios | 3 | 24-07-2004 03:16:28 |
|