Передача массивов между C++ и VBScript
В чем может быть дело. Ниже приведенный код нормально складывает и достает переменные
(числа строки) но выдает ошибку "TypeMisMatch DataStorage.GetValue" если пытаться
положить а потом достать массив. Причем складывает массив нормально.
Может ктонибудь сталкивался ?
//IDL
[id(2), helpstring("method SetValue")] HRESULT SetValue([in] BSTR bstrName, [in] VARIANT* newVal);
[id(3), helpstring("method GetValue")] HRESULT GetValue([in] BSTR bstrName, [out, retval] VARIANT* pVal);
//C++
STDMETHODIMP CDataStorage::SetValue(BSTR bstrName, VARIANT* newVal)
{
CSingleLock lock(&m_AccessGuard, TRUE);
CString csValName(bstrName);
VARIANT* pVar = m_DataMap[csValName];
if(pVar == NULL)
{
pVar = (VARIANT*)CoTaskMemAlloc(sizeof(VARIANT));
VariantInit(pVar);
m_DataMap[csValName] = pVar;
}
VariantClear(pVar);
VariantCopy(pVar, newVal);
return S_OK;
}
STDMETHODIMP CDataStorage::GetValue(BSTR bstrName, VARIANT* pVal)
{
CSingleLock lock(&m_AccessGuard, TRUE);
CString csValName(bstrName);
VARIANT* pVar = m_DataMap[csValName];
if(pVar != NULL)
{
VariantCopy(pVal, pVar);
return S_OK;
}
else
{
return S_FALSE;
}
}
//VBScript 1
Dim text
Dim newtext
text = "fuck"
DataStorage.SetValue "val1", text
newtext = DataStorage.GetValue("val1")
MsgBox(newtext)
//VBScript 2
Dim text1(1)
Dim newtext1
text1(0) = "fuck"
DataStorage.SetValue "val2", text1
newtext1 = DataStorage.GetValue("val2")
MsgBox(newtext1(0))
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить