FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Mon Aug 06, 2018 07: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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Mon Aug 06, 2018 07:49 PM
Intenta asi, al salir del sistema(programa principal),

Code (fw): Select all Collapse
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
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Tue Aug 07, 2018 02: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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Tue Aug 07, 2018 02:38 PM
Creo, sea mejor generar todo en *.PDF, yo hago asi y no tengo problemas y 茅s m谩s seguro.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Wed Aug 08, 2018 03:46 PM
Code (fw): Select all Collapse
#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
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Wed Aug 08, 2018 04: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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Thu Aug 09, 2018 01: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
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Thu Aug 09, 2018 04: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

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Sat Aug 11, 2018 07: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
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Posted: Mon Aug 13, 2018 08: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 ???

Continue the discussion