ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby rterraz » Mon Aug 06, 2018 7:37 pm

Estimados amigos
Estoy usando en Rpreview en una aplicacion y me encuentro con que es imposible borrar los metafiles que se generan en el \TEMP de windows.
Cuando la aplicación arranca hago un aEval(Directory(Gentenv('TEMP')+'\*.emf'),{|aFiles| ferase(Getenv('TEMP')+'\'+aFiles[1])}) y se borran todos perfectamente.
Ahora bien, cuando hago un preview de cualquier listado o Report, todo funciona bien, se generan los metafiles correspondientes y se muestran en el Preview, luego efectúo la impresión y cierro el preview. LOS ARCHIVOS METAFILES PERMANECEN EN SU LUGAR y se van acumulando a medida que voy haciendo distintos preview, es imposible borrarlos manualmente porque me dan un error de que EL ARCHIVO A BORRAR ESTA EN USO POR OTRO PROCESO !!!
El preview ya fue cerrado, incluso cambio de proceso y no hay forma de borrarlos hasta que cierro la aplicación y la arranco nuevamente.
He probado de todo para liberarlos, oPrn:end(), DeleteEnhMetafile(CloseEnhMetafile(hHand)), ferase(cFile) etc,ctc,etc.
Con aplicaciones viejas de 16bits. el preview termina y los metafiles (*.wmf) se borran todos automáticamente. Mire la clase rpreview pero no encuentro la causa de dicho comportamiento.
Alguien podría, por favor orientarme ? será un 'BUG' de la Tprinter o la Rpreview ?
Muchas gracias a todos
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby karinha » Mon Aug 06, 2018 7:49 pm

Intenta asi, al salir del sistema(programa principal),

Code: Select all  Expand view

FUNCTION LIBERA_TODO()

   DELETEFILE( "C:\WINDOWS\TEMP\*.EMF" )

   DbCommitAll()
   DbUnLockAll()
   DbCloseAll()
   FreeResources()
   Release All
   SysRefresh()
   HB_GCALL( .T. )
   CLEAR MEMORY

   IF FILE( "checkres.txt" )
      FErase( "checkres.txt" )
   ENDIF

   CheckRes()

   PostQuitMessage( 0 )
   QUIT

RETURN NIL
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby rterraz » Tue Aug 07, 2018 2:17 pm

Hola Karinha un gusto conocerte!
muchas gracias por tu aporte.
Lo probe pero los *.EMF siguen sin permitir ser borrados hasta que no salgo totalmente de la aplicación o entro de nuevo.
Por lo que veo la Rpreview los genera y los abre para mostrarlos y luego no los libera mas y es imposible borrarlos.
Lo que pasa que en mi aplicación yo genero liquidaciones y al terminar guardo los *.emf en un archivo zip por si en algun momento es necesario reimprimirlas.
Si esto ocurre abro el ZIP en una carpeta, extraigo los *.emf y realizo el preview de los mismos y su reimpresión.
Hasta ahi todo Ok, una vez terminada la reimpresión debo borrar los *.EMF que recuperé para que no se mezclen con otras posibles reimpresiones y eso es imposible.Me dice que la aplicacion mantiene habiertos los archivos y que es imposible borrarlos. COMO LOS CIERRO ????
En 16bits la rpreview los borra automaticamente al terminar el preview, pero en 32bits no funciona :(
Saludos desde Argentina
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby karinha » Tue Aug 07, 2018 2:38 pm

Creo, sea mejor generar todo en *.PDF, yo hago asi y no tengo problemas y és más seguro.

Image
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby karinha » Wed Aug 08, 2018 3:46 pm

Code: Select all  Expand view

#include "FiveWin.ch"
#Include "Directry.ch"

static oWnd

//----------------------------------------------------------------//

function Main()

   local oBar

   /*
   AEVAL(DIRECTORY( "TEMP*.*"     ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
   AEVAL(DIRECTORY( "SOMA*.*"     ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
   */


   IF FILE( "C:\WINDOWS\TEMP\TESTE.EMF" )

      DELETEFILE( "C:\WINDOWS\TEMP\TESTE.EMF" )

      IF FILE( "C:\WINDOWS\TEMP\TESTE.EMF" )

         ? "Porque no borra? computadora con VIRUS? "

         LIBERA_TODO()

         RETURN NIL

      ENDIF

   ENDIF

   DEFINE WINDOW oWnd TITLE "Borra Emf"

   DEFINE BUTTONBAR oBar _3D OF oWnd

   DEFINE BUTTON OF oBar ACTION( LIBERA_TODO() ) // salir

   SET MESSAGE OF oWnd TO "Borra Emf" NOINSET CLOCK DATE KEYBOARD

   ACTIVATE WINDOW oWnd

return nil

FUNCTION LIBERA_TODO()

   DELETEFILE( "C:\WINDOWS\TEMP\*.EMF" )

   DbCommitAll()
   DbUnLockAll()
   DbCloseAll()
   FreeResources()
   Release All
   SysRefresh()
   HB_GCALL( .T. )
   CLEAR MEMORY

   /*
   IF FILE( "checkres.txt" )
      FErase( "checkres.txt" )
   ENDIF

   CheckRes()
   */


   PostQuitMessage( 0 )
   QUIT

RETURN NIL
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby rterraz » Wed Aug 08, 2018 4:36 pm

Hora Karinha
Gracias por seguir ocupandote del tema.
Te explico...cuando recien entras a la aplicacion o cuando ejecutas la Libera_todo despues de haber terminado la aplicación (saliste de la oWnd del main)
los archivo se borran sin problemas.
El problema surge una vez que has hecho un preview.
A partir de alli TODOS los nuevos *.EMF que se van generando quedan capturados y es imposible borrarlos!!!
Proba hacer un preview de alguna impresión y una vez que hayas terminado anda a la carpeta Getenv('TEMP') de windows e intenta borrar alguno de los *emf que encuentres y vas a ver lo que ocurre (imposible borrarlos). Tenes que estar con la aplicación que hizo la impresión corriendo
Lo probamos en windows10 y windows7 y es lo mismo. Usando la Preview en 16bits los *.EMF se borran automaticamente al terminar el preview, por eso creo que el problema se encuentra en algun lugar de la Clase rPreview pero he probado algunas modificaciones de la misma y NADA.
un abrazo
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby karinha » Thu Aug 09, 2018 1:31 pm

Mira en RPREVIEW.PRG si el comando DELETEMETAFILE(), está funcionando; Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby rterraz » Thu Aug 09, 2018 4:08 pm

el DeleteEnhMetafiles() no los borra
Estuve mirando con el comando OPENFILES del sistema y me muestra que todos los *.emf estan abiertos por la aplicación (el oWnd main del EXE de FWH)
Hasta que no salgo de la misma no se liberan!!!
Pasa en cualquier version de windows. Hay algo en el ejecutable que los mantiene abiertos.
Si queres probar hace un pequeño exe que haga un PREVIEW de cualquier listado y vas a ver que hasta que no cerras el exe no podes borrarlos :shock:
Estoy por abandonar :cry:
saludos
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby FranciscoA » Sat Aug 11, 2018 7:06 pm

Que raro.
En mi versión FWH 1204, los EMF son borrados inmediatamente después de cerrar el preview.
Por supuesto si no cierras el preview no se puede borrarlos.

Tienes modificada la classe tprinter, metodo end()?

Seria bueno que mostraras tu código.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos

Postby rterraz » Mon Aug 13, 2018 8:29 pm

Tengo el fwh 18 y la clase tprinter y rpreview estan originales.
Compare el metodo end() con el de versiones anteriores y es igual.
Hay algo que mantiene los emf capturados y impide actuar al ferase() del metodo end().
He probado con oprinter:end() y oprinter:=nil y nada
Ya me canse voy a tratar por otro lado
Muchas gracias.
Pd. Cuando cierro la aplicacion los archivos se liberan.poe eso los borro todos al inicio pero ni bien hago un preview se empiezan a acumular y tengo listados que producen cientos de ellos ???
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: groiss and 61 guests