举个例子可以吗?我是这样的
例如
string[] var1=new string[3];
var1[0]="Date1";
var1[1]="Product1";
var1[2]="Product2";
object invar=var1;
obj.methodname(invar);
提示错误“内存分配访问无效”
直接写obj.methodname(var1);同样的错误提示

解决方案 »

  1.   

    把object invar=var1;这行代码去掉,老大
      

  2.   

    sorry,没有看到下面写的,应该可以阿,是不是方法里边处理报错的?
      

  3.   

    在VC中这样调用可以的,大致如下:
             VARIANT Var1
    VariantInit(&Var1);
    SAFEARRAYBOUND bound[1]; bound[0].lLbound = 0;
    bound[0].cElements = 3; SAFEARRAY *psa1 = NULL;
    psa1 = SafeArrayCreate(VT_BSTR, 1, bound); long lBound = 0;
    BSTR bstrVal = ::SysAllocString(L"Date1");
    SafeArrayPutElement(psa1, (long*)&lBound, bstrVal);
    ::SysFreeString(bstrVal);
    lBound = 1;
    bstrVal = ::SysAllocString(L"Product1");
    SafeArrayPutElement(psa1, (long*)&lBound, bstrVal);
    ::SysFreeString(bstrVal);
    lBound = 2;
    bstrVal = ::SysAllocString(L"Porduct2");
    SafeArrayPutElement(psa1, (long*)&lBound, bstrVal);
    ::SysFreeString(bstrVal);
    V_VT(&Var1) = VT_ARRAY | VT_BSTR;
    V_ARRAY(&Var1) = psa1;把Var1传进去就可以
      

  4.   

    在VB6.0中
    Dim var1(2) As String
      var1(0) = "Date1"
      var1(1) = "Product1"
      var1(2) = "Product2"
    把var1传如也可调用成功