Asp.net中调用COM组件中的某个函数,该函数需要一个Variant参数(内含两个字符串值),请问在asp中怎么设置这个参数
我在用:
Dim groupDN(2)
groupDN(0) = "aa"
groupDN(1) = "bb"用groupDN作为参数的时候,会出现错误:服务器出现意外情况
通过COM组件中输出的信息可以判断,com组件中的函数不能处理这个数组
就是说数组的结构不对
请教高说该如何设置这个参数才能可以
我在用:
Dim groupDN(2)
groupDN(0) = "aa"
groupDN(1) = "bb"用groupDN作为参数的时候,会出现错误:服务器出现意外情况
通过COM组件中输出的信息可以判断,com组件中的函数不能处理这个数组
就是说数组的结构不对
请教高说该如何设置这个参数才能可以
如上所述,对于数组为输入参数的情况,Param.vt为VT_VARIANT | VT_BYREF,Param.pvarVal->vt为VT_ARRAY | VT_VARIANT | VT_BYREF,此时访问此数组将用到安全数组(SafeArray)
SAFEARRAY* psa = NULL;
if (Param.pvarVal->vt & VT_BYREF)
psa = *(Param.pvarVal->pparray);
else
psa = Param.pvarVal->parray; if (SafeArrayGetDim(psa) != 1)
return E_INVALIDARG;
LONG LBound, UBound, Count;
SafeArrayGetLBound(psa, 1, &LBound);
SafeArrayGetUBound(psa, 1, &UBound);
Count = UBound - LBound + 1; _variant_t v;
VARIANT* pvData = NULL;
SafeArrayAccessData(psa, (void**)&pvData);
for (LONG i=0; i<Count; ++i)
{
v = pvData[i];
v.ChangeType(VT_I4);
char temp[20];
output += itoa(v.lVal, temp, 10);
}
SafeArrayUnaccessData(psa);
强烈建议只使用一维数组,因为二维数组实在是太麻烦了注:以上只在asp中测试过,在asp.net中不知道是否与此兼容