Page 1 of 1
No borrar fichero (SOLUCIONADO)
Posted: Fri Oct 20, 2023 3:14 am
by Armando
Amigos del foro:
El siguiente código
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
Posted: Fri Oct 20, 2023 3:55 am
by Willi Quintana
Mi estimado,prueba asi:
Code: Select all | Expand
ShellExecute(0,"Open",cFile,,,1)
SysWait(2)
DELETE File(cFile)
Re: No borrar fichero
Posted: 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
Posted: Fri Oct 20, 2023 2:36 pm
by Willi Quintana
MI estimado, una idea...
Code: Select all | Expand
copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...
Re: No borrar fichero
Posted: Fri Oct 20, 2023 2:49 pm
by Enrico Maria Giordano
Also try with WAITRUN().
Re: No borrar fichero
Posted: 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
copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...
Re: No borrar fichero
Posted: 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
Posted: 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
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
Posted: 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
Posted: 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[1] )
next
Re: No borrar fichero
Posted: 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
Posted: 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().
Re: No borrar fichero (SOLUCIONADO)
Posted: 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