Привет!
Есть задача: передать методу COM-объекта ссылку на SafeArray в виде параметра. Этот метод запишет в искомый SafeArray некоторые данные.
Код:
|
HRESULT STDMETHODCALLTYPE SomeMethod(LPSAFEARRAY* Buffer); |
Вопрос: как это сделать?
Пробовал так:
var dictionary = new ActiveXObject("Scripting.Dictionary");
for (var i = 0; i < 10; i++) {
dictionary.add(i, 0);
};
var ar1 = dictionary.items();
var ar2 = VBArray(ar1);
var ar3 = VBArray(ar1).toArray();
var ar4;
SomeObj.SomeMethod(ar1);
SomeObj.SomeMethod(ar2);
SomeObj.SomeMethod(ar3);
SomeObj.SomeMethod(ar4);
Все 4 варианта возвращают исключение: Type mismatch.
WScript.echo(typeof ar1); // unknown
WScript.echo(typeof ar2); // unknown
WScript.echo(typeof ar3); // object
WScript.echo(typeof ar4); // undefined
Если кто-нибудь сталкивался с подобной проблемой, прошу подсказать путь к решению.