Normally when you use OLEObject to connect to an ActiveX control and encounter an error, you will get the generic run time error ‘R0035 – Application terminated. Error calling external object function xxx’.
I have run across a very simple way to capture the actual error code and message generated by the ActiveX control.
First, create a new Standard Class object and select oleobject for the type.
Next add the following instance variables:
ULong ErrorCode
String ErrorText
Then add this code to the externalexception event:
ErrorCode = ResultCode
ErrorText = Description
Finally save the object as n_oleobject.
In your script that calls the ActiveX control functions you will do the following:
n_OLEObject oleTheObj
Integer li_rc
oleTheObj = Create n_OLEObject
li_rc = oleTheObj.ConnectToNewObject(“TheObject.Name”)
If li_rc = 0 Then
try
oleTheObj.TheFunction()
catch ( RuntimeError rte )
PopulateError(oleTheObj.ErrorCode, oleTheObj.ErrorText)
MessageBox(“OLE Runtime Error #” + &
String(Error.Number), Error.Text, StopSign!)
oleTheObj.DisconnectObject()
Return
end try
oleTheObj.DisconnectObject()
Else
MessageBox(“OLE Connect Error #” + String(li_rc), &
“Connect To Object Failed!”, StopSign!)
End If
You’ll notice that in the catch section I used PopulateError to get the instance variables with the error information. I did this so I would also have the objectname/scriptname/linenumber for error logging if this were a real application.
Comments (0)