关于JavaScript数组与VB DLL中中数组的传递问题
各位:我现在在JavaScript中定义一个一维数组,然后调用VB编写的DLL对象,在DLL对象给此数组赋值,然后在JavaScript读出已经赋值的数组。请问如何操作。
DLL对象:
TestPrj.Test
Public Sub Test(strName() As Variant)
strName(0) = "MR"
strName(1) = "zhang"
End Sub
JavaScript:
<Script language='JavaScript'>
var A=new Array();
var Test=new ActiveObjectX("TestPrj.Test");
Test.Test(A);
Response.Write(A.length);
</Script>
请问出错在哪里????
问题点数:100、回复次数:2Top
1 楼lun2001(小伦)回复于 2002-02-26 13:08:15 得分 20
出错信息是怎么样的
可能数组不兼容
试一下用VBArray
或改用vbscriptTop
2 楼acptvb(微软全球技术中心 VB技术支持)回复于 2002-02-26 20:22:17 得分 80
感谢您使用微软产品。
您可以在VB中建立AciveX dll,处理含数组参数的函数,在ASP中调用AciveX 对象的函数。由于Javascript的array对象与VB中的array以不同的方式存储,因此Javascript的array对象作为VB ActiveX dll函数的参数将出现类型不匹配的错误。建议您在ASP中用VBscript。
如下例,先在VB中建立AciveX dll工程,项目名为ASPArray,类名clsArray
Public Function TestArray(ByRef vArray As Variant) As String
Dim nCnt As Integer
'Check that the argument passed is an array
If Not IsArray(vArray) Then
TestArray = "Parameter is not an Array"
Exit Function
End If
For nCnt = LBound(vArray) To UBound(vArray)
'change Array Element
vArray(nCnt) = "aqqq"
Next nCnt
TestArray = "Parameter is an Array"
End Function
在ASP中引用ASPArray.clsArray对象,
<%
Dim oTestObj, vMyArray(2), vRtnValue
vMyArray(0) = "Element 1"
vMyArray(1) = "Element 2"
vMyArray(2) = "Element 3"
Set oTestObj = Server.CreateObject("ASPArray.clsArray")
vRtnValue = oTestObj.TestArray(vMyArray)
Response.Write( vRtnValue )
%> <br>
vMyArray(1)=<%=vMyArray(1)%>
详细信息请参考以下链接:
HOWTO: Implement Array Arguments in VB COM Objects for ASP
http://support.microsoft.com/support/kb/articles/q217/1/14.asp
您可以使用JavaScript中vbArray对象的toArray()方法把 VBScript的数组(Array) 转化为Javascript数组,但是截至到目前VBScript (4.0)版,还没有把JavaScript数组 转化为 VBscript数组的方法。
详细信息请参考以下文档中Passing Arrays from VBScript to Jscript部分:
Using VBScript and JScript on a Web Page
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvid/html/msdn_vbnjscrpt.asp
- 微软全球技术中心 VB技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
======================
Top




