お世話になっております。
IDispatchのInvoke関数から、JScriptの関数に文字列の配列データを
渡そうとしているのですが、VARIANT型の引数に
どのようなデータを与えればよいかわかりません。
SAFEARRAY を使ってみましたがうまくいきませんでした。
ご教授お願いします。
環境は VisualStudio.NET ATL/WTL です。
よろしくおねがいします。
JScriptの配列はSafeArray(VB形式の配列)ではないので、
JScript側でScripting.Dictionary等を使って、SafeArray配列に変換したものを
渡すらしいです。
参考)
http://www.imasy.or.jp/~hir/hir/tech/js_tips.html#safearray
上のURLにもありますが、JScriptの配列は「CSV文字列」らしいので、VARIANTでもでき
そうですけど。
JScriptからCOM使うのですか?
VCからJScriptの関数(?)を呼び出すのですか?
前者なら、おとなしくVBScriptを間に挟んだほうが早いです。
後者なら、BSTRの配列をSAFEARRAYに格納し、
VT_BSTR|VT_SAFEARRAYを指定してVARIANTにセットすればOKだと思います。
返信ありがとうございます。
あれから、いろいろ試してみました。
JScriptで使用している配列は、Arrayオブジェクトを使用したものでした。
VCからJScriptの関数呼び出しで、SAFEARRAY を使用して渡しても、
うまくいかないのは、JScript内の関数でArrayオブジェクトのプロパティを
使用しようとして、失敗していたからです。
ただの配列の場合は、SAFEARRAY で問題ありませんでした。