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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  各位:我现在在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

VB开发者浏览器自动化指南:SeleniumBasic环境搭建实战应用 浏览器自动化是现代软件开发和测试中的关键技术,它通过模拟用户操作实现网页交互的自动化。其核心原理是WebDriver协议,它作为浏览器自动化脚本之间的桥梁,允许程序化控制浏览器行为。这项技术的价值在于能够显著提升重复性Web操作的效率,确保测试的一致性和准确性,广泛应用于数据抓取、自动化测试和业务流程自动化等场景。对于VB开发者而言,SeleniumBasic是一个关键的COM库,它将WebDriver的强大能力无缝集成到VB6VB.NET开发环境中。通过SeleniumBasic,开发者无需切换技术栈 阅读详情

相关推荐

Unity跨平台集成海康威视SDK:实现实时视频流解码渲染全解析

在实时音视频技术领域,跨平台SDK集成视频流处理是构建安防监控、数字孪生等系统的核心技术基础。其原理在于通过平台原生库的互操作,将设备端的编码视频流传输至应用层进行解码渲染。这项技术的核心价值在于打通物理摄像头虚拟场景的实时数据通道,为智慧园区、AR/VR巡检等场景提供低延迟、高稳定的视觉感知能力。具体到工程实践,开发者需深入理解不同平台(如Windows、Android、WebGL)的库文件部署策略、C#封装层设计以及软解码流程。例如,通过P/Invoke声明原生函数、精确映射数据结构,并利用海康P

weixin_34034261的博客 324

VC控件接收js传出的数组参数

利用vc写的ocx控件,用js调用传递数组参数的方法

从Visual Basic兴衰史看编程语言生态技术选型之道

编程语言作为软件开发的基础工具,其设计哲学生态演变深刻影响着技术发展轨迹。以Visual Basic为例,其通过可视化设计事件驱动模型,开创了快速应用开发(RAD)的先河,极大降低了图形界面编程门槛。这种强调开发者体验的理念,至今仍是现代IDE前端框架的核心思想。然而,随着技术架构向Web、移动端及云原生演进,VB在类型系统、面向对象支持及跨平台能力上的局限逐渐显现。从VB6VB.NET的转型阵痛,揭示了技术生态中平滑迁移路径的重要性;而C#在.NET生态的崛起,则体现了社区活力语法亲和力对语言生

weixin_33868027的博客 352

网页脚本(javascript)调用VB函数的另类方法

不用通过IDocHostUIHandler接口,让网页调用VB程序中的函数的方法。 该方法原理是:在网页中通过导航到一个特定的自定义网址,这个网址 就表示我们要调用的VB中的函数,然后在WebBrowser控件的BeforeNavigate2 事件处理函数中检测是否是我们自定义的网址,如果是,则根据不同的约定 调用不同的函数,从而间接实现从网页调用VB函数的目的

vb6的一些自己写的函数 用于类型转换,十六进制输出,字节转换

基本的函数 '用于将 一个变量 的类型打印出来。 Public Function getVarTypeToString(ByVal m_value As VbVarType) As String 'varType typename 'information: IsArray IsDate IsEmpty IsError IsMissing IsNULL isNumric IsO...

weixin_34357887的博客 445

Handling Arrays Between ASP and COM

Handling Arrays Between ASP and COMBy Adam B. RichmanRating: 3.4 out of 5Rate this article document.write("print this article")print this article email this article to a colleag

sonicdater的专栏 1012

传递VB数组DLL中的函数

用C++builder6编写一个标准的DLLVB6调用,需要从DLL取出字节数组,在VB中接收。 Private Declare Function OpenComm Lib "ScaleWeight" Alias "Open" (ByVal yibiaoType As String, ByVal Comm As String, ByVal Setup As String) As Boolean

chinayu2007的专栏 1542

VB6.0调用DLL

目 录 第1章 VB6.0调用DLL    1 1 VC++编写DLL    1 1.1 使用__stdcall    1 1.2 使用 .DEF 文件    1 2 简单数据类型    2 2.1 传值(ByVal)    2 2.2 传址(ByRef)    3 2.3 传址(VarPtr)    4 2.4

Hanford的专栏 1万+

DLL传递字符串数组输出参数

实现了一个数据库模块,提供枚举数据库服务器功能,返回所有数据库服务器名称。一开始想通过vector输出参数方式,在DLL中添加数据库服务器名称。不过在释放输出参数的时候出现错误,这是由于输出参数的资源是在DLL中申请,而在主程序中进行释放,如果申请和释放的方式不一致,就会导致释放出错。 主要的解决方法就是谁申请谁释放。对于这种动态申请的资源,由于资源数量不确定,最好是由DLL来提供接口进行释放。

imlmy的专栏 4673

js调用c/c++dll,用字符串/数组作为参数

紧接上一篇文章,本文讨论如何用字符串和数组作为参数

dylwildwolf的专栏 5571

vb/vb.net开发精粹(10)

vb6.0 msdn 请教AUTOCAD+vba问题——区域复制/镜像 vb中如何用api快速读取大于1G的txt数据啊 dll类中声明public变量在该dll添加的窗体中如何调用 VB6 类模块,再引用另一个类模块的问题 MsgBox a$, ,b$,c$为什么调试不通? 请教AUTOCAD+vba问题——区域复制/镜像 如何获取本机IP 为什么vb中显示不了matlab画图结

师以长技以制夷 1343

YXScript.DLL-VBScript.Decode的优秀解决方案

YXScript.DLL - 一个比任何你见到的解码程序(脚本)快10000倍的组件! 对于这个问题,网上满天飞到处都是那段JavaScript的网页脚本,一大堆菜鸟拼命转载 如果脚本比较小(几KB)的时候,基本还够用,近期公司的服务器被人攻击,截获一个木马 是100KB,用那段脚本直接卡了数分钟,还只解码了一部分,没办法,求人不如求己,我干 脆写了个DLL输出标准WINDOWSAPI...

yiyeqinghuasoon 155

利用js,调用VB打包dll文件,内有vb程序源码,和实例

利用ocx实现页面调用dll文件,即vb程序,CAB包

JSA变成类似vba环境给第三方软件集成IDE功能,脚本功能

摘要:本文提出将WPS JSA改造为独立VB风格脚本语言的技术方案,旨在打造轻量级、跨平台的国产脚本语言。方案采用"解释器+IDE+扩展库"三层架构,保留VB核心语法,新增文档处理、系统操作等优化功能,并规划12个月分阶段实施计划。通过开源核心解释器、构建开发者生态、提供商业增值服务等策略,实现从技术剥离到商业落地的完整闭环。该方案特别关注对VB/VBA存量开发者的友好迁移,同时满足办公自动化、系统运维等场景需求,具有语法简洁、轻量化设计等差异化优势。

1146

.NET Framework 1.0到4.0演进中的真实技术契约迁移避坑指南

.NET Framework 是 Windows 平台企业级应用的底层运行基石,其核心由 CLR 运行时、BCL 类库和配置模型共同构成。从 1.0 到 4.0 的演进并非简单功能叠加,而是经历了四次底层契约重写:泛型引入重构 JIT 行为、CAS 安全模型确立权限边界、WCF/WPF 等技术整合带来跨组件互操作约束,以及 CLR 4.0 的并行运行时机制。这些变更深刻影响着程序集加载、ViewState 序列化、WCF 配置兼容性 GAC 版本共存等关键环节。尤其在遗留系统迁移中,.NET Framew

403

PowerLessShell技术解析:无进程执行PowerShell命令的攻防实践

在Windows系统管理安全领域,进程创建命令行执行是基础且核心的技术概念。传统上,PowerShell作为强大的脚本引擎,其执行会生成明显的进程日志记录,易被安全监控捕获。为提升隐蔽性,安全研究人员攻击者发展出PowerLessShell技术,其原理在于利用系统内置的替代宿主机制,在不直接启动powershell.exe的情况下解析并执行PowerShell代码。这项技术的核心价值在于实现命令执行的隐蔽化日志规避,对于系统管理员而言,可用于安全的远程运维;对于安全团队,则是检测防御体系盲点的关键

weixin_30765577的博客 482

C++集成大漠插件:COM原理、免注册调用多线程实践指南

组件对象模型(COM)是Windows平台实现二进制组件复用的核心技术标准,它通过接口实现分离的机制,允许不同语言编写的模块相互调用。理解COM原理是进行Windows自动化开发的基础,其核心在于通过虚函数表(vtable)进行方法调度和引用计数管理生命周期。这一技术价值在于实现了跨语言、跨进程的组件交互,极大提升了代码复用性和系统模块化程度。在自动化测试、游戏辅助和办公流程自动化等应用场景中,开发者常需集成如大漠插件这类功能强大的COM组件来实现屏幕操作、图像识别等复杂功能。本文聚焦于C++项目中集成大

weixin_30607659的博客 376

Delphi字符串1-based索引原理安全实践

字符串索引是编程中最基础也最易出错的概念之一,其本质是内存访问的安全契约人类直觉的工程平衡。Object Pascal采用1-based索引并非历史妥协,而是通过编译期范围检查、数学表达对齐和VCL生态统一,构建出区别于C/Python的强类型安全范式。这种设计使字符串操作天然具备边界防护能力,显著降低越界崩溃风险,在工业控制、医疗设备等高可靠性场景中价值突出。结合热词‘[]’和‘字符串’,本文深入解析UnicodeString字符访问、AnsiString字节访问及动态数组混合索引的三重语义,并覆盖M3

weixin_30634661的博客 457
上一篇: javascript下的数组及其操作
下一篇: C#中容易忽视的技术点
0_net
博客等级 码龄22年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值