хочу из Java Script в свой COM передавать данные через SAFEARRAY.
данные буду передавать следующие: числа (пример: 1, 34, 765)
строки (пример: "asd", "a", "dj35")
если я не ошибаюсь, то и числа можно будет как строку передавать.
в методе хотелось бы получать данные вот в такую вот переменную:
CComBSTR bstrVal;
как мне надо определить парамерт в мотоде через который я буду передавать данные в COM?
и нужно ли делать какие-нибудь преобразования чтобы получить данные в указанную выше переменную?
А>хочу из Java Script в свой COM передавать данные через SAFEARRAY.
А>данные буду передавать следующие: А>числа (пример: 1, 34, 765) А>строки (пример: "asd", "a", "dj35")
если проблема в том что неизвестно заранее число параметров и их тип, то так:
[id(1), helpstring("Метод с переменным числом аргументов"), vararg]
HRESULT MethodName([in] SAFEARRAY(VARIANT) *params );
А>сделал так... А>далее на Java Script создаю массивы (у меня в метод уходит 2 массива)
var iParam = new Array(), jParam = new Array();
А>и отправляю в метод А>эксплорер ругается, мол типа А>Type mismatch
А>как это побороть?
JScript-овский объект Array не имеет никакого отношения к SAFEARRAY(VARIANT), если нужна стыковка с ним, MSDN рекомендует использовать в jscript объект VBArray
Re[4]: COM && SAFEARRAY && Java Script
От:
Аноним
Дата:
14.12.04 06:46
Оценка:
Здравствуйте, Odi$$ey, Вы писали: OE>JScript-овский объект Array не имеет никакого отношения к SAFEARRAY(VARIANT), если нужна стыковка с ним, MSDN рекомендует использовать в jscript объект VBArray
это как?
как я понял надо писать так
var iParam = new VBArray(), jParam = new VBArray();
но опять же вылетает ошибка
VBArray expected
подскажите как сделать (лучше было бы на примере, а то я еще новичок)
Здравствуйте, <Аноним>, Вы писали:
А>но опять же вылетает ошибка А>VBArray expected
VBArrays are read-only, and cannot be created directly. The safeArray argument must have obtained a VBArray value before being passed to the VBArray constructor. This can only be done by retrieving the value from an existing ActiveX or other object.
А>подскажите как сделать (лучше было бы на примере, а то я еще новичок)
<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
Dim i, j, k
Dim a(2, 2)
k = 1
For i = 0 To 2
For j = 0 To 2
a(j, i) = k
document.writeln(k)
k = k + 1
Next
document.writeln("vbCRLF")
Next
CreateVBArray = a
End Function
-->
</SCRIPT>
<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray){
var a = new VBArray(vbarray);
var b = a.toArray();
var i;
for (i = 0; i < 9; i++)
{
document.writeln(b[i]);
}
}
-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JScript">
<!--
VBArrayTest(CreateVBArray());
-->
</SCRIPT>
</BODY>