Microsoft Script Control and ActiveX Server in BCB4

Can somebody tell me what the heck is going on?
I have application that I wrote in BCB3 that uses the Microsoft Script
Control to
implement VB and Java script as a macro language. In order to use the
scripting effectively,
I made my program a ActiveX server and hook in my functions with the
method. In BCB3 I could return an "Error" that would be caught as an
exception in the main program.
I would get the line in the VB script that the error occurred on and the
text of the string.

The following is one of my functions that worked in BCB3:

STDMETHODIMP TMethodsImpl::GetByte(int ByteNum, long* RetVal)
        if (ByteNum > BytesRead - 1)
            return Error("Sc.GetByte: Requested Byte Exceeds Last Read
Request", IID_IMethods);
            *RetVal = (unsigned char)ReadBuffer[ByteNum];
    catch(Exception &e)
        return Error(e.Message.c_str(), IID_IMethods);
    return S_OK;


In BCB4, this code does not work anymore. All I get is a "External
Exception" dialog box.

I also noticed that the "code wizard" in BCB4 does not generate the
try/catch blocks for the ActiveX
server functions like BCB3 did.

Problem 2, When I try to terminate the application, I get the following

"There are still active COM objects in this application.
One or more clients may have references to these objects,
so manually closing this application may cause those client application(s)
to fail.
Are you sure you want to close this application?"

How do I get rid of this annoying message?

Can someone explain how I make all this work in BCB4 please.
I sure hope I didn't throw away $250.00 for the upgrade to BCB4.