Erro 9000:
-
- Posts: 603
- Joined: Sun May 04, 2008 8:44 pm
Erro 9000:
Unrecoverable error 9000:
Destructors disabled! Destructor of class: 'ToleAuto' Can´t be executed.
why it ?
Destructors disabled! Destructor of class: 'ToleAuto' Can´t be executed.
why it ?
-
- Posts: 603
- Joined: Sun May 04, 2008 8:44 pm
Re: Erro 9000:
And erro show only later close App.
thanks
thanks
-
- Posts: 603
- Joined: Sun May 04, 2008 8:44 pm
Re: Erro 9000:
I recompile now my project using fwh905 and xharbour 1.2.1 more continue show message
of erro when close app.
Someone can help ? thanks
of erro when close app.
Someone can help ? thanks
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Erro 9000:
This was the problem in an earlier version of xharbour. I too experienced this.
You may use xharbour build provided with FWH or latest from xhabour site. This problem does not exist now.
You may use xharbour build provided with FWH or latest from xhabour site. This problem does not exist now.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
-
- Posts: 603
- Joined: Sun May 04, 2008 8:44 pm
Re: Erro 9000:
ageswaragunupudi,
i´m using last version of xharbour more continue problem.
what you make to solve it ?
thanks
i´m using last version of xharbour more continue problem.
what you make to solve it ?
thanks
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Erro 9000:
Try to assign nil to it:
oOleAutoObject := nil
oOleAutoObject := nil
-
- Posts: 603
- Joined: Sun May 04, 2008 8:44 pm
Re: Erro 9000:
Antonio,
Im using class CActiveX and have method Release
what´s i need change ?
METHOD Release() CLASS cActiveX
//-----------------------------------------------------------------------------------------------//
If ::hSink != NIL
OleDisconnectEvents( ::hSink )
::hSink:= NIL
EndIf
If ::hObj != NIL
OleFreeDispatch( ::hObj )
::hObj:= NIL
EndIf
::aEvent:= ::aBlock:= NIL
If ::hWnd != NIL
OleWEDestroy( ::hWnd )
::hWnd := NIL
EndIf
Return NIL
in end line i do it
#include "fivewin.ch"
function main()
public oAct, ownd
define window ownd
oAct:=cActiveX():New(ProgId) // progId referente ao meu activeX
activate window ownd
oAct:release()
Release ALL
SysRefresh()
return nil
more when close app continue message Erro.
Thanks
Im using class CActiveX and have method Release
what´s i need change ?
METHOD Release() CLASS cActiveX
//-----------------------------------------------------------------------------------------------//
If ::hSink != NIL
OleDisconnectEvents( ::hSink )
::hSink:= NIL
EndIf
If ::hObj != NIL
OleFreeDispatch( ::hObj )
::hObj:= NIL
EndIf
::aEvent:= ::aBlock:= NIL
If ::hWnd != NIL
OleWEDestroy( ::hWnd )
::hWnd := NIL
EndIf
Return NIL
in end line i do it
#include "fivewin.ch"
function main()
public oAct, ownd
define window ownd
oAct:=cActiveX():New(ProgId) // progId referente ao meu activeX
activate window ownd
oAct:release()
Release ALL
SysRefresh()
return nil
more when close app continue message Erro.
Thanks
Re: Erro 9000:
Antonio,
"Destructors disabled! Destructor of class: 'TOLEAUTO' can't be executed."
No function names, lines or other info in the Error.log
I'm using FWH 9.05 and xH 1.2.1 provided with it.
Where should I put the line you mentioned above in my prg ?
Thanks,
Davide
I've received an Error.log from a Client with just the single line:Antonio Linares wrote:oOleAutoObject := nil
"Destructors disabled! Destructor of class: 'TOLEAUTO' can't be executed."
No function names, lines or other info in the Error.log
I'm using FWH 9.05 and xH 1.2.1 provided with it.
Where should I put the line you mentioned above in my prg ?
Thanks,
Davide
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Erro 9000:
Davide,
Do it in your PRG where you no longer need your used OleAuto object
Do it in your PRG where you no longer need your used OleAuto object
Re: Erro 9000:
Antonio,
I have a window opened this way (not the main window):
The problem happens when the program receives a WM_CLOSE message from an external process.
If the window above is still opened, then the error.log file is created and the window doesn't close (the main program is hanged)
Adding oActiveX:=nil after the ACTIVATE doesn't cure the problem.
Adding oActiveX:End() DOES cure it (the window gets closed with the main program by the WM_CLOSE command and no error.log is generated) but this way the browser content disappears as soon as it shown, so I cannot End() the object that way.
Any idea ?
Thanks,
Davide
I finally could replicate the problem here.Antonio Linares wrote:Do it in your PRG where you no longer need your used OleAuto object
I have a window opened this way (not the main window):
Code: Select all
DEFINE WINDOW oWnd TITLE cTitle
oActiveX = TActiveX():New( oWnd, "Shell.Explorer" )
oWnd:oClient := oActiveX // To fill the entire window surface
oActiveX:Do( "Navigate2",cUrl,,,cPostData,cType)
ACTIVATE WINDOW oWnd MAXIMIZED VALID (oActiveX:End() , .t.)
// 02.09.09 oActiveX := nil // Doesn't cure the problem
// 02.09.09 oActiveX:End() // Cures the problem, but makes the browser disappear
If the window above is still opened, then the error.log file is created and the window doesn't close (the main program is hanged)
Adding oActiveX:=nil after the ACTIVATE doesn't cure the problem.
Adding oActiveX:End() DOES cure it (the window gets closed with the main program by the WM_CLOSE command and no error.log is generated) but this way the browser content disappears as soon as it shown, so I cannot End() the object that way.
Any idea ?
Thanks,
Davide
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Erro 9000:
Davide,
Please try this change in Class TActiveX:
alternatively try this:
oActiveX:oOleAuto := nil
Please try this change in Class TActiveX:
Code: Select all
METHOD Destroy() INLINE ActXEnd( ::hActiveX ), ::oOleAuto := nil, Super:Destroy()
oActiveX:oOleAuto := nil
Re: Erro 9000:
Antonio,
> METHOD Destroy() INLINE ActXEnd( ::hActiveX ), ::oOleAuto := nil, Super:Destroy()
this unfortunately doesn't work (looks like the program hangs before method Destroy() get fired).
> oActiveX:oOleAuto := nil
This DOES work, but ... (there's always a but) ... I also have a buttonbar on that window that performs some actions on the ActiveX object, and that line (obviously) breaks it.
Any other way to empty that object ONLY when the program receives a WM_CLOSE message ?
Thanks,
Davide
> METHOD Destroy() INLINE ActXEnd( ::hActiveX ), ::oOleAuto := nil, Super:Destroy()
this unfortunately doesn't work (looks like the program hangs before method Destroy() get fired).
> oActiveX:oOleAuto := nil
This DOES work, but ... (there's always a but) ... I also have a buttonbar on that window that performs some actions on the ActiveX object, and that line (obviously) breaks it.
Any other way to empty that object ONLY when the program receives a WM_CLOSE message ?
Thanks,
Davide
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Erro 9000:
Davide,
> Any other way to empty that object ONLY when the program receives a WM_CLOSE message ?
Call it from the VALID clause of the window. (WM_CLOSE)
> Any other way to empty that object ONLY when the program receives a WM_CLOSE message ?
Call it from the VALID clause of the window. (WM_CLOSE)
Re: Erro 9000:
Antonio,
I've found a workaround by assigning the object to a local variable before := nil , then, in the toolbar icons I restore it in its place before performing the ACTIONS and, when finished, I assign nil again.
Still searching for a better solution in the class however (perhaps tOleAuto, not tActiveX).
Hi,
Davide
already tried. The program hangs before the VALID of that Window is evaluated (otherwise the oActiveX:End() in the VALID would already correctly work)Antonio Linares wrote:Call it from the VALID clause of the window. (WM_CLOSE)
I've found a workaround by assigning the object to a local variable before := nil , then, in the toolbar icons I restore it in its place before performing the ACTIONS and, when finished, I assign nil again.
Still searching for a better solution in the class however (perhaps tOleAuto, not tActiveX).
Hi,
Davide