1

VBScriptでサードパーティのCOM関数を呼​​び出しています。メソッドシグネチャは次のとおりです。

HRESULT  ParseXML ([in] BSTR *textIn,[in] VARIANT_BOOL *aValidateIn,[out, retval] MSXML2.IXMLDOMDocument2 **aXMLDocOut)

私のVBScriptでは、次の呼び出しで型の不一致が返されます。

Dim someText
someText = "Hello"
Dim response
response = ParseXml(someText, False)

ただし、文字列リテラルの受け渡しは正常に機能します。

Dim response
response = ParseXml("Hello", False)

VBScript側で何をする必要があるか考えてみてください。

4

2 に答える 2

1

BSTRすでにポインタです。
BSTR*したがって、ポインタへのポインタです。

つまり、参照(ByRef textIn As String)によって文字列を渡します。

参照によって変数を渡す場合、型は一致する必要があります。someTextですVARIANT

BSTR( )だけを渡すとByVal textIn As String、VBが変換を処理します。

VBScript側で何をする必要があるか考えてみてください。

ライブラリではなく、修正したいスクリプトであることが確実な場合は、VBをだまして、refによって渡される一時変数を使用させます。

response = ParseXml((someText), False)
于 2011-07-08T07:31:53.203 に答える
0

あなたは本当にParseXml(somText, False)あなたのスクリプトを書きましたか?次に、それはタイプミスです。する必要がありますsomeText

于 2011-07-08T07:37:28.230 に答える