вызов COM-метода со значением Foo (..., [out] BSTR *) из VBScript - PullRequest
5 голосов
/ 13 апреля 2011

Можно ли вызвать метод COM с подписью

 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)

из VBScript?

Следующее:

 Dim a;
 Dim b;
 component.Foo "something", a, b

выдает ошибку о несовместимых типах.


Я все еще могу изменить сигнатуру метода.

1 Ответ

4 голосов
/ 13 апреля 2011

Похоже, выходные параметры не поддерживаются; параметры ByRef / [in, out] есть, но только для параметров VARIANT.

Из следующей статьи базы знаний:

ИНФОРМАЦИЯ: Ошибки несоответствия типов при передаче параметров из компонента ASP в компонент Visual Basic @ support.microsoft.com

" VBScript поддерживает только параметры VARIANT ByRef. Вы можете использовать VBScript для вызова процедуры, которая принимает строки ByRef, но поведение компонентов по умолчанию, созданных с помощью Visual Basic, состоит в том, что при попытке передать ByRef происходит ошибка с ошибкой несоответствия типов. параметров для этих компонентов. По умолчанию функция приведения типов в OLE Automation не работает, когда ее просят преобразовать вариант ByRef в любой другой тип ByRef."

Также вот другие ссылки по теме:

Входите, выходите, выходите, решитесь уже @ блоги MSDN
Ошибка VBScript «Несоответствие типов» с параметром «[in, out] BSTR *» SO Вопрос

...