Click to See Complete Forum and Search --> : ASP and DLL


Hambi
August 27th, 2002, 08:42 AM
HI folks!

I have a big problem.

I have wrote a DLL in Visal studio 6++. I wrote the method HRESULT Test([in]VARIANT varIn, [out]VARIANT* pvarOut)
{
*pvarOut = varIn;
}

Now i call this method in ASP
...
Dim a
Dim b
a = "SOMETHING"
obj.Test(a,b)
...
and i get an error: "A trappable error (C0000005) occurred in an external object. The script cannot continue running."

So can anyone telll what is wrong here.

Tnx for answer

Green_Beret
August 29th, 2002, 07:19 AM
Hi,

You can't simply equate a Variant to another Variant in VC++.
In the VC++ domain a Variant is a user-def structure and not a basic data type as in VB, ASP etc.

Depending on the VT type of the variant you will have to equate the appropriate member of the Variant.
E.g :
Long :
pvarOut->vt = VT_I4;
pvarOut->lVal = varIn.lVal;

String :
pvarOut->vt = VT_BSTR;
pvarOut->bstrVal = SysAllocString(varIn.bstrVal);

Double :
pvarOut->vt = VT_R8;
pvarOut->dblVal = pvarIn.dblVal

An alternate method is to use the VariantChangeType function:

Long:
VariantChangeType(pvarOut,&varIn,NULL,VT_I4);
String:
VariantChangeType(pvarOut,&varIn,NULL,VT_BSTR);
Double:
VariantChangeType(pvarOut,&varIn,NULL,VT_R8);



Hope this helps.

Regards,
The Beret