头要爆老,(关于ASP中用VBSCript,向自编COM传参数的问题??????)
情况如下,
我用VC编有一COM组件,内一接口,某函数,需要传入字符串数组。
我用VB能够很好的调用,并能得到正确结果。但是,在ASP中使用VBScript
来调用时,却说“服务器出现意外情况”,不能执行。请问为什么??
VC
______________
IDL:[id(3), helpstring("GetProData")] HRESULT GetProData([in]int iProType, [in]VARIANT Parames,[out,retval]VARIANT *pReturn);
STDMETHODIMP CUnRealDraw::GetProData(int iProType, VARIANT Parames, VARIANT *pReturn)
{
// Get the parames
_bstr_t tt;
tt="into the param it";
HRESULT hr=S_OK;
long lStartBound =0;
long lEndBound = 2;
hr = SafeArrayGetLBound(Parames.parray, 1, &lStartBound);
hr = SafeArrayGetUBound(Parames.parray, 1, &lEndBound);
SAFEARRAYBOUND safeBound[1];
SAFEARRAY* pOutArray;
safeBound[0].cElements = lEndBound-lStartBound+1;
safeBound[0].lLbound = 0;
pOutArray = SafeArrayCreate(VT_VARIANT,1,safeBound);
for(long iIndex = lStartBound; iIndex <= lEndBound; iIndex ++)
{
VARIANT varFlavor;
VariantInit(&varFlavor);
hr = SafeArrayGetElement(Parames.parray,&iIndex, &varFlavor);
if(hr != S_OK)
{
tt="error,can't find the value";
}
if(varFlavor.vt == VT_I4 )
{
long lsz = varFlavor.lVal;
}
if(varFlavor.vt == VT_BSTR )
{
_bstr_t bstrOut(varFlavor.bstrVal);
CComVariant variantFlavor(SysAllocString(varFlavor.bstrVal));
SafeArrayPutElement(pOutArray,&iIndex,&variantFlavor);
tt= bstrOut;
}
}//for loop
//......
//.......
//return the VARIANT
V_VT(pReturn)=VT_ARRAY | VT_VARIANT;
V_ARRAY(pReturn) = pOutArray;
return S_OK;
}
____________________
VB
_______________
Dim tt As UnRealDraw
Set tt = New UnRealDraw
Dim InVar(4)
Dim inn
inn = 12
InVar(0) = "sssss"
InVar(1) = "lava_sdb"
InVar(2) = " nihao"
InVar(3) = "ss"
InVar(4) = "dd"
'Dim filesize
Dim OutStr
Dim szOut As String
OutStr = tt.GetProData(1, InVar)
For x = LBound(OutStr) To UBound(OutStr)
szOut = szOut + OutStr(x)
Next
MsgBox szOut
____________________
********************
VBScript(ASP)
_______________
<%
Set objArray= Server.CreateObject("YWPT.UnRealDraw")
InVar=Array("lava_sdb"," nihao")
'InVar(1)="lava_sdb"
'InVar(2)=" nihao"
'Dim filesize
Dim OutStr
OutStr = objArray.GetProData(1, InVar)
for x= LBound(OutStr) to UBound(OutStr)
Response.write "<BR>"&x&": "&OutStr(x)
next
Set objArray= nothing
%>
____________________
先谢谢各位了!!!!