C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 13 を表示中)
■4067 / )  Re[1]: VB→JavaScriptの配列渡しについて
□投稿者/ 魔界の仮面弁士 (290回)-(2007/06/05(Tue) 14:42:12)
■No4066 (ささきちひろ さん) に返信
> ary = Array("あああああ","いいいいい")
> call objShellWindows(i).document.parentWindow.execscript("test1('" & ary & "')","VBScript")   ''← 型が一致しません

「配列」を文字列連結することはできませんので、エラーになるでしょうね。
書くとすれば、
    .execscript("test3 Array(1234, 5678)", "VBScript")
あるいは、
    .execscript("Call test3(Array(1234, 5678))", "VBScript")
のような形となるでしょう。
# VBS では、戻り値を受け取らないメソッド呼び出しでは、括弧を付けない点に注意。


それに、「VBScript の配列」と「JScript の配列」は別物です。
もし、VBScript の配列を、JScript 側で扱うのであれば、
  function test3(arrayOfVBS){
    var vbArray = new VBArray(arrayOfVBS);
    var jsArray = vbArray.toArray();
    test1( jsArray );
  }
のように、VBArray オブジェクトから Array オブジェクトへの変換が必要です。


とはいえ、今回の場合に関して言えば、わざわざ「配列オブジェクト」を渡すのではなく、
    .execscript("Call test4(1234, 5678)", "VBScript")
    .execscript("Call test5(""aa"", ""bb"")", "VBScript")
のように、そのまま引数と渡す形の方が楽かと。

  function test4(){
    var jsArray = new Array(arguments[0], arguments[1]);
    test1( jsArray );
  }
  function test5(a, b){
    test1( [a, b] );
  }

返信 編集キー/


管理者用

- Child Tree -