COM経由での配列データの渡し方 – プログラミング – Home

COM経由での配列データの渡し方
 
通知
すべてクリア

COM経由での配列データの渡し方


おさむ
 おさむ
(@おさむ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

お世話になっております。

IDispatchのInvoke関数から、JScriptの関数に文字列の配列データを
渡そうとしているのですが、VARIANT型の引数に
どのようなデータを与えればよいかわかりません。

SAFEARRAY を使ってみましたがうまくいきませんでした。

ご教授お願いします。

環境は VisualStudio.NET ATL/WTL です。
よろしくおねがいします。


引用解決済
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

JScriptの配列はSafeArray(VB形式の配列)ではないので、
JScript側でScripting.Dictionary等を使って、SafeArray配列に変換したものを
渡すらしいです。

参考)
http://www.imasy.or.jp/~hir/hir/tech/js_tips.html#safearray

上のURLにもありますが、JScriptの配列は「CSV文字列」らしいので、VARIANTでもでき
そうですけど。


返信引用
KJ
 KJ
(@KJ)
ゲスト
結合: 21年前
投稿: 52
 

JScriptからCOM使うのですか?
VCからJScriptの関数(?)を呼び出すのですか?

前者なら、おとなしくVBScriptを間に挟んだほうが早いです。
後者なら、BSTRの配列をSAFEARRAYに格納し、
VT_BSTR|VT_SAFEARRAYを指定してVARIANTにセットすればOKだと思います。


返信引用
おさむ
 おさむ
(@おさむ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

返信ありがとうございます。

あれから、いろいろ試してみました。
JScriptで使用している配列は、Arrayオブジェクトを使用したものでした。
VCからJScriptの関数呼び出しで、SAFEARRAY を使用して渡しても、
うまくいかないのは、JScript内の関数でArrayオブジェクトのプロパティを
使用しようとして、失敗していたからです。

ただの配列の場合は、SAFEARRAY で問題ありませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました