Page 1 of 1

No borrar fichero (SOLUCIONADO)

PostPosted: Fri Oct 20, 2023 3:14 am
by Armando
Amigos del foro:

El siguiente código

Code: Select all  Expand view

ShellExecute(0,"Open",cFile,,,1)
DELETE File(cFile)
 


Me presenta el problema de que al intentar abrir el fichero éste ya no existe
como si primero se eliminara (DELETE) y después el intento de abrirlo (SHELLEXECUTE)

Gracias por el apoyo

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 3:55 am
by Willi Quintana
Mi estimado,prueba asi:
Code: Select all  Expand view

ShellExecute(0,"Open",cFile,,,1)
SysWait(2)
DELETE File(cFile)
 

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 4:16 am
by Armando
Mr.

Si entiendo bien, una vez abierto el fichero (PDF) se esperará 2 segundos e
intentará borrar el fichero pero aún esta abierto.

Como que la solución puede ser abrir el PDF de forma modal y hasta que el
usuario cierre el PDF se procederá a borrarlo, el tema es que no se cómo
abrir el PDF modal :-(

Saludos

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 2:36 pm
by Willi Quintana
MI estimado, una idea...
Code: Select all  Expand view

copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"
Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 2:49 pm
by Enrico Maria Giordano
Also try with WAITRUN().

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 6:51 pm
by Armando
Mr.

Gracias por la idea pero el problema es el mismo, trataré de explicarme mejor:

Tengo una tabla con un campo BLOB donde está almacenado un PDF, extraigo
el PDF en un archivo temporal para mostrarlo en vista previa y después de que el usuario
cierre la vista previa proceder a borrar el archivo PDF temporal.
No me interesa conservarlo pues lo tengo en la tabla

El ShellExecute intenta abrir el PDF temporal pero el DELETE ya se ejecutó y por lo tanto
el ShellExecute ya no encuentra el archivo.

Saludos

Willi Quintana wrote:MI estimado, una idea...
Code: Select all  Expand view

copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"
Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 6:52 pm
by Armando
Mr. Enrico,

I didn't understand your idea, I'm sorry, can you expand on it

Regards

Enrico Maria Giordano wrote:Also try with WAITRUN().

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 6:58 pm
by karinha
Armando, ¿por qué no lo borras solo cuando el usuario cierra el programa permanentemente?

Code: Select all  Expand view

FUNCTION CERRAR_TODO()

   IF FILE( "TUTOR09.LOG" )
      DELETEFILE( "TUTOR09.LOG" )
   ENDIF

   IF FILE( "ARCHIVO.PDF" )
      DELETEFILE( "ARCHIVO.PDF" )
   ENDIF

   lSalida := .F.

   DbCommitAll()
   DbUnLockAll()
   DbCloseAll()
   FreeResources()
   Release All
   SysRefresh()

   HB_GCALL( .T. )

   CLEAR MEMORY

   PostQuitMessage( 0 )

   QUIT

RETURN NIL
 


Regards, saludos.

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 7:08 pm
by Armando
Karinha:

Es una buena alternativa, voy a trabajar sobre eso

Pensé que con abrir el PDF modal sería la solución solo que
no sé especificarle al ShellExecute que abra el PDF modal.

Saludos

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 7:09 pm
by sysctrl2
sugiero lo que comenta Joao
al cerrar o salir de los sistemas
aFicheros := directory( ".\tmp\*.*" )
for i := 1 to len(aFicheros)
ferase( '.\tmp\'+aFicheros[i][1] )
next

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 7:17 pm
by Carles
Hola,

Entiendo q quieres borrar el fichero para q no se quede por alli una vez cierres el visor. O creas un hilo q este pendiente o despues de abrir puedes hacer algo como

While fErase(cFile) = -1
Syswait(1)
End

No lo he probado. Este paso te congela la aplicacion, claro

C.

Re: No borrar fichero

PostPosted: Fri Oct 20, 2023 7:17 pm
by Enrico Maria Giordano
Armando wrote:Mr. Enrico,

I didn't understand your idea, I'm sorry, can you expand on it

Regards

Enrico Maria Giordano wrote:Also try with WAITRUN().


Code: Select all  Expand view
WAITRUN( "your_pdf_reader.exe your_pdf_file.pdf" )

Re: No borrar fichero (SOLUCIONADO)

PostPosted: Sat Oct 21, 2023 2:54 pm
by Armando
Amigos:

Pues me decanté por la solución de Joao, borrar al salir.

Saludos a todo este excelente foro