2011-07-08 11 views
1

私はVBScriptでサードパーティのCOM関数を呼​​び出しています。メソッドのシグネチャは次のとおりです。私のVBScriptでVBScriptの文字列をBSTR *を期待するCOM関数に渡す*

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

次のコールは、型の不一致バック与える:

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

しかし、細かい文字列リテラル作品を渡す:

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

どれを私がVBScript側で何をする必要があるのか​​?

答えて

1

BSTRはすでにポインタです。
BSTR*は、ポインタへのポインタです。

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

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

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

私はVBScript側で何をする必要がありますか?

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

response = ParseXml((someText), False) 
+0

ありがとう、temp変数を使ってスクリプトを正常に動作させました。これはサードパーティ製のライブラリなので、ライブラリの更新はオプションではありませんでした。再度、感謝します。 – Lance

0

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

+0

申し訳ありませんが、それは実際のスクリプトに誤字がない質問を書くときにタイプミスでした。 – Lance

+0

元の質問を更新しました。 – makdad

関連する問題