Originariamente inviato da mariliana
Come spiegato nel post precedente, il mio problema non è l'intervallo di tempo tra una creazione e l'altra, ma la creazione effettiva del file.
OK direi allora che non capito nulla, anche perchè non uso RAVE
Attenzione però (=> nota sempre non uso RAVE quindi non ti so dire) se la funzione è sincrona o asincrona.
Se è sincrona => bon. Il programma si "ferma" finquando non ha finito di generare il report PDF.
Se è asincrona (es. crea un thread separato)=> fai attenzione se il PDF viene generato in un tempo X.
Se il report è "gigante" può capitare infatti che la "stampa" richieda che anche minuti e se il tuo programma "pensa" che sia già stata completata puoi trovarti con un file ancora in fase di scrittura (o neppure iniziata).
In questo caso (soluzione generale, non specifica di RAVE) devi testare la "fine" dei lavori di chi ci sta lavorando sopra (il file) il che si può fare con un "trucchetto fetente" tipo questo
codice:
function fileInCreazione(i_file:string):boolean;
var f: file of byte;
hFile:THandle;
begin
result:=false;
hfile:=0;
hfile := FileOpen(Pchar(i_file), OF_READ or fmsharedenynone);
if hfile>0 then
begin
fileclose(hfile);
result:=true;
end;
end;
in pratica fai un ciclo (con dentro un delay) che "testa" se puoi aprire in lettura (ma esclusivamente) il file che ti interessa.
quando ci riesci => è finita la generazione [ad esempio puoi spostare il file, cancellarlo etc]