ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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
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
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Intenta asi, al salir del sistema(programa principal),
Saludos.
Code: Select all | Expand
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
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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
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
![Sad :(](./images/smilies/icon_sad.gif)
Saludos desde Argentina
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Creo, sea mejor generar todo en *.PDF, yo hago asi y no tengo problemas y és más seguro.
![Image](https://i.imgur.com/t2rlh6w.png)
![Image](https://i.imgur.com/t2rlh6w.png)
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Code: Select all | Expand
#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
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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
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
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
Mira en RPREVIEW.PRG si el comando DELETEMETAFILE(), está funcionando; Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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
Estoy por abandonar
saludos
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
![Shocked :shock:](./images/smilies/icon_eek.gif)
Estoy por abandonar
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
saludos
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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.
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
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Re: ARCHIVOS *.EMF DEL PREVIEW - Imposible borrarlos
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 ???
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 ???