举个例子可以吗?我是这样的
例如
string[] var1=new string[3];
var1[0]="Date1";
var1[1]="Product1";
var1[2]="Product2";
object invar=var1;
obj.methodname(invar);
提示错误“内存分配访问无效”
直接写obj.methodname(var1);同样的错误提示
例如
string[] var1=new string[3];
var1[0]="Date1";
var1[1]="Product1";
var1[2]="Product2";
object invar=var1;
obj.methodname(invar);
提示错误“内存分配访问无效”
直接写obj.methodname(var1);同样的错误提示
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传进去就可以
Dim var1(2) As String
var1(0) = "Date1"
var1(1) = "Product1"
var1(2) = "Product2"
把var1传如也可调用成功