各位:我现在在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) % br 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
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)-微软全球技术中心VB技术支持
本贴子以现状提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(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))。