FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error de TOLEAUTO
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Error de TOLEAUTO
Posted: Mon Aug 25, 2008 12:52 PM
Estoy compilando un ejemplo sobre openoffice que hay por el foro y cuanto intento salir para finalizar el programa me lanza el siguiente mensaje:

Destructors disabled! Destructor of class "TOLEAUTO' can't be executed.



Esto ocurre cuando salgo del programa con oWnd:End(), hasta que no salgo puedo ejecutar tantas veces quiero el openoffice.
Solo ocurre si ejecuto previamente el openoffice mediante toleauto sino me sale correctamente, alguna idea.
Saludos



Andrés González desde Mallorca
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Error de TOLEAUTO
Posted: Mon Aug 25, 2008 01:22 PM

oExcel:Quit()

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Error de TOLEAUTO
Posted: Wed Aug 27, 2008 10:14 AM
Bueno después de hacer el tonto un par de días y con la ayuda de Biel me dado cuenta que tOleAuto no tiene ningún comando para destruir de forma automática los objeto como pone el mensaje, resulta que ahora para destruir los objetos basta con asignarle a nil.

 ::oBject:=Nil


Se destruyen todos los objetos creados y ese mensaje ya no vuelve a salir. Mira tu por donde!.
Saludos



Andrés González desde Mallorca
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
Error de TOLEAUTO
Posted: Sat Aug 30, 2008 07:34 AM

Bueno, este hilo se ha documentado en el foro ingles ya que al parecer los objetos creados con TOLEAUTO (CREATEOBJECT), deberían destruirse por si solos, postura defendida por Enrico con razon, pese a ello y a que continuamente me salia el error expuesto, nos hemos dado cuenta que no ocurría así cuando se trataba de un objeto definido en una CLASSDATA. Enrico sometió el problema al foro de xHarbour. En la actualidad eso ya esta solucionado para ello hemos de actualizar a la ultima versión de xHarbour y compilar de nuevo. La cuestión es si es conveniente vaciar los objetos:=nil y asi liberar memoria, que supongo que sí ya que estos objetos se destruyen de manera automática solamente cuando destruimos el proceso ventana oWnd:End() con lo cual permanecen en memoria hasta que sales del programa.

http://forums.fivetechsoft.com/viewtopi ... 2727#62727

Saludos



Andrés González desde Mallorca
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Error de TOLEAUTO
Posted: Sat Aug 30, 2008 08:05 AM

Andres, por mi experiencia con SOAP, y que cada 1 minuto, 2 timers corriendo, me crean 2 objetos con CreateObject(), te diré, con xHarbour, que como no les asignes a NIL, ya puedes apagar la máquina, porque en menos que canta un gallo, es decir a la mañana siguiente, jejeje, tendrás el servidor caido por falta de memoria.

( Si, teoricamente Windows DEBERIA hacer un swap de memoria virtual al disco y todo lo que quieras, pero... la realidad demuestra que se cae )

Asi, mi consejo es asignarle a NIL, y si es posible, llamar al recolector de basura.

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error de TOLEAUTO
Posted: Sat Aug 30, 2008 08:09 AM

Rafa,

La experiencia es la madre de la ciencia ;-)

Como se nota que te lo estás currando bien currado :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Error de TOLEAUTO
Posted: Sat Aug 30, 2008 07:12 PM

Yo creo que es una buena práctica el ir destruyendo los objetos que vamos creando, ya sea usando su propio destructor si lo tiene, o via :=nil(o ambas dos en el caso de tOleauto, 1º End(si existe) del objeto contenido, y luego :=nil al contenedor ).

Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/

Continue the discussion