Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Esperar que se genere archivo e imprimirlo. (https://www.clubdelphi.com/foros/showthread.php?t=60940)

lavtaro 20-10-2008 15:25:33

Esperar que se genere archivo e imprimirlo.
 
Hola a todos:

Necesito saber cuando se termina de generar un archivo en una carpeta.

Son varios listados de una aplicación DOS, mi aplicación con un timer revisa la carpeta donde se generan los listados, si hay un archivo lo imprime y lo borra.

El problema es que hay listados que a veces se demoran poco en salir (no hay problema) y otras veces se demoran más y mi aplicación no sabe como esperar a que termine de generar el archivo, el resultado es que los imprime incompletos.

De antemano muchas gracias.

coso 20-10-2008 15:45:18

Hola,
en teoria, mientras se va dando datos a un archivo este esta abierto en modo escritura por lo que intentar acceder a el de esta misma manera te deberia dar error. Ahora bien, de la manera que lo estas contando, parece ser que puedes borrar el archivo aunque este este aun incompleto, por lo que se deduce que el programa que va generando el archivo lo va abriendo y cerrando paulatinamente. Si es este ultimo el caso, entonces lo veo muy dificil, pues tu aplicacion nunca sabria si el archivo esta acabado ya o aun le falta recibir mas datos. Una manera seria mirar si la aplicacion generadora esta activa, y si es asi, no hacer nada.

TOPX 20-10-2008 16:48:26

Hola,

Y otra podría ser que, la aplicación que está generando, en un segundo archivo confirme la finalización de la generación. Ya sea con uno con el mismo nombre y otra extensión, o un archivo para todos, que tendrá una lista de los que va terminando.

lavtaro 20-10-2008 17:16:10

Gracias por sus respuestas.

La idea realizar las modificaciones mínimas (no quiere más el programador, no lo puedo obiligar :mad:) al sistema que genera el archivo, ahora la aplicación siempre está activa, genere el listado o no.

Nuevamente muchas gracias.

Cita:

Empezado por TOPX (Mensaje 321098)
Hola,

Y otra podría ser que, la aplicación que está generando, en un segundo archivo confirme la finalización de la generación. Ya sea con uno con el mismo nombre y otra extensión, o un archivo para todos, que tendrá una lista de los que va terminando.


coso 20-10-2008 17:18:51

¿y como imprimes? probaria de abrirlo en modo escritura antes de imprimir y si salta error, es que el archivo esta siendo actualizado.

lavtaro 04-11-2008 21:36:04

Cita:

Empezado por coso (Mensaje 321116)
¿y como imprimes? probaria de abrirlo en modo escritura antes de imprimir y si salta error, es que el archivo esta siendo actualizado.

Gracias amigos solucioné el problema con este código:

Código Delphi [-]
     nEspera := 0;

     while nEspera = 0 do
     begin
       FileHandle := FileOpen(cNombreOrigen, fmOpenWrite );
       if FileHandle <>  -1 then nEspera := 1;
     end;

     FileClose(FileHandle);

No es muy elegante pero funciona.

Muchas gracias a todos.


La franja horaria es GMT +2. Ahora son las 14:54:06.

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