2012-06-20 24 views
5

Tengo un archivo DLL que da salida a los datos a una secuencia. Pero agrega un postfijo y un prefijo que no quiero. Puedo crear un MemoryStream, dejar que el archivo DLL muestre los datos y luego recortarlo, pero puede haber unos pocos GB de datos, así que solo quiero que se guarde directamente en un archivo (FileStream). Creo que la mejor solución es crear nuestra propia clase Stream. E hice:¿Cómo detectar el final de la secuencia?

function TFileStream2.Write(const Buffer; Count: Integer): Longint; 

donde comprobación de la posición y si es = 0, entonces descarto primeros bytes de la memoria intermedia. De esta forma puedo recortar el comienzo del archivo. Pero, ¿cómo puedo detectar el final de la secuencia para poder descartar algunos bytes desde el final?

Respuesta

6

Cuando se destruye el objeto de transmisión, simplemente recorte la parte final del archivo. Puede hacerlo modificando la propiedad Size.

+0

Pero creo que los bytes ya están guardados en el disco. ¿Se puede acortar un archivo de esta manera? – Tom

+0

¡Funcionó! Muchas gracias, David! – Tom

Cuestiones relacionadas