Re: И не будет работать
От: Vi2 Удмуртия http://www.adem.ru
Дата: 10.06.04 03:50
Оценка:
Здравствуйте, U4, Вы писали:

U4>interface IDsScript : IDispatch

U4>{
U4> ...
U4> [id(6),vararg] HRESULT ExecQuery2([out] long* rltcd, [out] BSTR* buf, ... );
U4>};

U4>JavaScript

U4>...
U4>ПРОБЛЕМА. Необходима записать в переменные rltcd, buf соответственно число и строку. В отладчике видно, что по этим адресам записываются нужные значения. Однако в JavaScript после выполнения метода значение этих переменных не изменились.

U4>Пробывал ставить [in,out], не помогло. Удается возвращать значения в JavaScript только при объявлении метода как [out,retval], но таким способом можно вернуть значение всего одной переменной, которая обязаня стоять последним параметром в списке аргументов функции. Оба этих условия мне не подходят. Может кто-нибудь знает почему не срабатывает [out], буду очень признателен.


Если коротко и для направления действий: JavaScript так вызывает методы через IDispatch::Invoke, что у сервера нет шансов переправить обратно параметры, не имеющие атрибута retval. Это ограничение JavaScript или "This behavior is by design".

Здесь в форуме есть информация по этому поводу. Например, поиск по лексеме out, script и т.п.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.