关于javascript数组与VB DLL中中数组的传递问题

来源:互联网 发布:矩阵的分解算法 编辑:程序博客网 时间:2024/06/05 18:04
各位:我现在在JavaScript中定义一个一维数组,然后调用VB编写的DLL对象,在DLL对象给此数组赋值,然后在JavaScript读出已经赋值的数组。请问如何操作。

  DLL对象:

  TestPrj.Test

  PublicSubTest(strName()AsVariant)
   strName(0)="MR"
   strName(1)="zhang"
  EndSub

  JavaScript:

  <Scriptlanguage='JavaScript'>
   varA=newArray();
   varTest=newActiveObjectX("TestPrj.Test");
   Test.Test(A);
   Response.Write(A.length);
  </Script>

  请问出错在哪里????

  ---------------------------------------------------------------------------------------------------------------------------------------------------------

  您可以在VB中建立AciveXdll,处理含数组参数的函数,在ASP中调用AciveX对象的函数。由于Javascript的array对象与VB中的array以不同的方式存储,因此Javascript的array对象作为VBActiveXdll函数的参数将出现类型不匹配的错误。建议您在ASP中用VBscript。

  如下例,先在VB中建立AciveXdll工程,项目名为ASPArray,类名clsArray

  PublicFunctionTestArray(ByRefvArrayAsVariant)AsString
    DimnCntAsInteger
    'Checkthattheargumentpassedisanarray
    IfNotIsArray(vArray)Then
     TestArray="ParameterisnotanArray"
     ExitFunction
    EndIf
    FornCnt=LBound(vArray)ToUBound(vArray)
      'changeArrayElement
      vArray(nCnt)="aqqq"
    NextnCnt  
    TestArray="ParameterisanArray"
  EndFunction

  在ASP中引用ASPArray.clsArray对象,

  <%
   DimoTestObj,vMyArray(2),vRtnValue
      
    vMyArray(0)="Element1"
    vMyArray(1)="Element2"
    vMyArray(2)="Element3"
 
    SetoTestObj=Server.CreateObject("ASPArray.clsArray")
 
    vRtnValue=oTestObj.TestArray(vMyArray)
    Response.Write(vRtnValue)
   %>
   vMyArray(1)=<%=vMyArray(1)%>

 

  详细信息请参考以下链接:

  HOWTO:ImplementArrayArgumentsinVBCOMObjectsforASP

  http://support.microsoft.com/support/kb/articles/q217/1/14.asp

  您可以使用JavaScript中vbArray对象的toArray()方法把VBScript的数组(Array)转化为Javascript数组,但是截至到目前VBScript(4.0)版,还没有把JavaScript数组转化为VBscript数组的方法。

  详细信息请参考以下文档中PassingArraysfromVBScripttoJscript部分:

  UsingVBScriptandJScriptonaWebPage

  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvid/html/msdn_vbnjscrpt.asp

原创粉丝点击