我有一个vb的dll,在jsp中要调用它的一个函数。函数声明格式为:
Public Function zipFile(strSourceFile() As String, strDestinationFile As String, strPassWord As String) As Boolean
有三个参数,第一个是数组,第二和第三个参数是字符串
我在jsp中这样定义
  function zipFile() {
    var ar1 = new Array(1);
    ar1[0] = "E:\\00000006\\00000001.tif";
  try{
    //MyOcx是Vb写的控件,已经被实例化
    MyOcx.zipFile(["fds","asdf"],"0001.zip","123");
    } catch(e) {
      alert(e.message);
    }
  }
但是调用的时候会抛出异常——类型不匹配。好像是js中的数组和Vb中的存储方式不一样,但是我不知道如何做?请大侠帮忙

解决方案 »

  1.   

    <HEAD>
    <SCRIPT LANGUAGE="VBScript">
    <!--
    Function CreateVBArray()
       Dim i, j, k
       Dim a(2, 2)
       k = 1
       For i = 0 To 2
          For j = 0 To 2
             a(j, i) = k
             document.writeln(k)
             k = k + 1
          Next
          document.writeln("vbCRLF")
       Next
       CreateVBArray = a
    End Function
    -->
    </SCRIPT><SCRIPT LANGUAGE="JScript">
    <!--
    function VBArrayTest(vbarray){
       var a = new VBArray(vbarray);
       var b = a.toArray();
       var i;
       for (i = 0; i < 9; i++) 
       {
          document.writeln(b[i]);
       }
    }
    -->
    </SCRIPT>
    </HEAD><BODY>
    <SCRIPT LANGUAGE="JScript">
    <!--
       VBArrayTest(CreateVBArray());
    -->
    </SCRIPT>
    </BODY>
    直接使用VBS写数组
      

  2.   

    不懂vbs,能够把代码给写出来吗?谢谢了。
      

  3.   

    我试过了,还是不行,提示类型不匹配,是不是不能用js传递控件的数组参数啊?
    修改代码如下:
    <head>
    <title></title>
    <SCRIPT LANGUAGE="VBScript">
    <!--
    Function CreateVBArray()
        dim file(1)
        file(0) = "E:\00000006\00000001.tif"
        file(1) = "E:\00000006\00000002.tif"
       CreateVBArray = file
    End Function
    -->
    </SCRIPT>
    <SCRIPT LANGUAGE="JScript">
    <!--
    function VBArrayTest(vbarray){
       var a = new VBArray(vbarray);
       var b = a.toArray();
       return b
    }
    -->
    </SCRIPT>
    </head><body>
    function packFile()
    {
      try {
        var filearray = VBArrayTest(CreateVBArray());
        ehView1.zipFile(filearray,"132.zip","123");
      }
      catch (e) {
        alert(e.message);
      }
    }
    </body>
      

  4.   

    你好,我想问一下,你的问题解决了没有,我现在遇到了和你类似的问题,请求你的帮助.我的问题是,VB控件有一个这样的方法
    Graph(ByVal TP As Byte, ByVal X!, ByVal Y!, ByVal N As Byte, A() As Single, ByVal Bl as Single=1,Optional ByVal Size As Integer = 100)
    现在我在Javascript中调用,
    var arrayf =new Array();
    for(var i=0;i<10;i++)
    {
        arrayf[i]=i+5.26;
    }
    Map1.Graph(2,826.44,822.18,10,arrayf,1,100);
    运行是提示类型不匹配,
    期待你的回复,我邮箱是[email protected],谢谢!  
      

  5.   

    IE 中的 js 用 VBArray.