FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour No borrar fichero (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
No borrar fichero (SOLUCIONADO)
Posted: Fri Oct 20, 2023 03:14 AM
Amigos del foro:

El siguiente código
Code (fw): Select all Collapse
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
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
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 03:55 AM
Mi estimado,prueba asi:
Code (fw): Select all Collapse
ShellExecute(0,"Open",cFile,,,1)
SysWait(2)
DELETE File(cFile)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 04:16 AM
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
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 02:36 PM
MI estimado, una idea...
Code (fw): Select all Collapse
copyfile(cFile, "TEMP\" + cFile
ShellExecute(0,"Open","TEMP\" + cFile,,,1)
FERASE(cFile)
....
...
...
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 02:49 PM

Also try with WAITRUN().

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 06:51 PM
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 (fw): Select all Collapse
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 06:52 PM
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
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 06:58 PM
Armando, ¿por qué no lo borras solo cuando el usuario cierra el programa permanentemente?
Code (fw): Select all Collapse
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 07:08 PM

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
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 07:09 PM
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 "
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 07:17 PM

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
HIX -> https://github.com/carles9000/hix
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: No borrar fichero
Posted: Fri Oct 20, 2023 07:17 PM
Armando wrote:Mr. Enrico,

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

Regards
Also try with WAITRUN().
Code (fw): Select all Collapse
WAITRUN( "your_pdf_reader.exe your_pdf_file.pdf" )
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: No borrar fichero (SOLUCIONADO)
Posted: Sat Oct 21, 2023 02:54 PM

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

Continue the discussion