Asp.net中调用COM组件中的某个函数,该函数需要一个Variant参数(内含两个字符串值),请问在asp中怎么设置这个参数
我在用:
Dim groupDN(2)
groupDN(0) = "aa"
groupDN(1) = "bb"用groupDN作为参数的时候,会出现错误:服务器出现意外情况
通过COM组件中输出的信息可以判断,com组件中的函数不能处理这个数组
就是说数组的结构不对
请教高说该如何设置这个参数才能可以

解决方案 »

  1.   

    数组为输入参数([in]VARIANT Param)
    如上所述,对于数组为输入参数的情况,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中不知道是否与此兼容