No borrar fichero (SOLUCIONADO)

Post Reply
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

No borrar fichero (SOLUCIONADO)

Post by Armando »

Amigos del foro:

El siguiente código

Code: Select all | Expand

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
Last edited by Armando on Sat Oct 21, 2023 2:53 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Willi Quintana
Posts: 1023
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: No borrar fichero

Post by Willi Quintana »

Mi estimado,prueba asi:

Code: Select all | Expand

ShellExecute(0,"Open",cFile,,,1)
SysWait(2)
DELETE File(cFile)
 
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: No borrar fichero

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Willi Quintana
Posts: 1023
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: No borrar fichero

Post by Willi Quintana »

MI estimado, una idea...

Code: Select all | Expand

copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: No borrar fichero

Post 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)
....
...
...
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: No borrar fichero

Post 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().
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: No borrar fichero

Post 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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: No borrar fichero

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
sysctrl2
Posts: 1035
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: No borrar fichero

Post 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
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
Carles
Posts: 1146
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Re: No borrar fichero

Post 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.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Enrico Maria Giordano
Posts: 8728
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: No borrar fichero

Post 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

WAITRUN( "your_pdf_reader.exe your_pdf_file.pdf" )
User avatar
Armando
Posts: 3251
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: No borrar fichero (SOLUCIONADO)

Post by Armando »

Amigos:

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

Saludos a todo este excelente foro
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply