Здравствуйте, 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 и т.п.