Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   unir varios archivos (https://www.clubdelphi.com/foros/showthread.php?t=78266)

Enan0 03-04-2012 15:20:47

unir varios archivos
 
Hola Amigos.

Estoy con un incoveniente al unir Varios Archivos RTF (los cuales tienen varias imagenes y tamaños diferentes).

El problema es el siguiente, el proceso finaliza sin Errores, pero al verificar solo se observa el primero de los archivos.

Esto no Sucede en cambio si se utilizan archivos que contienen solamente texto, los cuales son unidos correctamente.

aca dejo la parte del codigo relevante a la operacion.

Código Delphi [-]

{
Fileboxrtf es un FileListBox en el cual muestro selecciono y los archivos.
StopByUser es una Variable Boolean que el utilizo como flag para verificar si el usuario cancelo la operacion.
stBar: status Bar....
Pbar: ProcessBar...
stSrc y StDest: TfileStream.
}
 while (FileBoxrtf.Count>i) and (not StopByUser) do begin
          StBar.Panels.Items[1].Text:=ExtractFileName(stDest.FileName)+ ' <--- ' +ExtractFileName(FileBoxrtf.Items.Strings[i]);
          Application.ProcessMessages;
          stSrc:=TFileStream.Create(FileBoxrtf.Items.Strings[i],fmOpenRead or fmShareDenyWrite);
          Application.ProcessMessages;
          StDest.CopyFrom(StSrc,stSrc.Size);
          Application.ProcessMessages;
          stSrc.Free;
          inc(i);
          Pbar.StepIt;
        end;

Gracias.

Ñuño Martínez 03-04-2012 22:05:08

Poco sé de cómo es el formato por dentro, pero me figuro que tendrá una cabecera, y como va por bloques ('{ ... }') supongo que también un pie, de forma que el programa que lo lee sólo analiza desde la cabecera al primer pie que encuentre. Para que funcione deberás quitar todas las cabeceras y pies que sobren.

Es como el formato HTML. Si pones:
Código:

<html>
  <body>
    <p>Hola caracola</p>
  </body>
</html>
<html>
  <body>
    <p>Esto no debería aparecer.</p>
  </body>
</html>


Enan0 03-04-2012 23:08:18

ahh muy buen dato. voy a revisarlo, yo me fie ya que con Archivos RTF que contengan solo TEXTO funciona correctamente!

Pero buen dato Gracias Ñuño...

Enan0 04-04-2012 14:50:27

Bueno Solo para aquellas personas Que les Interese.

Ñuño tenia razon con lo que me dijo en referencia a la estructura del archivo.

Despues de buscar un poco y hacer muchas pruebas, llegue a la conclucion de que solo mostraba el Primer archivo ya que la Estructura se cerraba al final de este, por lo que eran descartados las estructuras de los siguientes archivos.

Pruebas van.. pruebas vienen.. encontre la solucion mas simple que es.
Insertar al comienzo del StreamDestino la cadena

Cita:

{\rtf1 \ansi
(con un espacio)

y al final

Cita:

}
y bueno eso es todo.

una vez mas.. muchas gracias por el aporte

Ñuño Martínez 08-04-2012 15:21:29

Gracias a ti por indicar qué cabecera y pie usar. .)


La franja horaria es GMT +2. Ahora son las 19:27:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi