当前位置:  开发笔记 > 后端 > 正文

在VB6/VBA项目引用中,Array(),LBound()和UBound()来自......?

如何解决《在VB6/VBA项目引用中,Array(),LBound()和UBound()来自?》经验,为你挑选了1个好方法。

在VB6/VBA项目引用中,Array(),LBound()和UBound()来自......?当我输入代码时,它们不会出现在自动完成列表(ctrl + space)中,它们不会自动完成,并且必须在文本编辑器识别它们之前完全输入它们.只有在键入左括号时,ToolTipText才会弹出命令语法.此外,它们不会出现在对象资源管理器中.

这里可能有一个基本的概念,我不知道.它让我想知道,其他命令/声明/关键字以同样的方式被隐藏了吗?某个地方有名单吗?我用谷歌搜索信息,但没有找到任何东西,可能是因为我不知道我在寻找什么,并使用错误的搜索条件.

我问这些问题是因为我习惯为许多VB6内置函数加上前缀:VBA.Left(),VBA.Len,VBA.Instr()等等.但我无法弄清楚与Array(),LBound()和UBound()一起使用的参考前缀,或者它们对VB6来说是如此基本,以至于它们没有.

我做这个前缀是因为多年前我正在研究一个大型项目,并且我试图在不同的参考库中使用相同名称的函数.我是一个新手,我花了一段时间才弄明白,它造成了巨大的问题,因为这些功能并没有像我认为的那样工作.就在那之后我发现了这个前缀习惯.这种方式更简单,并始终确保使用预期的功能.



1> Comintern..:

它们不作为IntelliSense选项出现的原因(以及它们没有出现在对象浏览器中的原因)是因为某种原因它们不在我之外的VBE7.dll类型库中声明它们.该Array函数在.dll中实现rtcArray.知道它的实用性是可疑的,因为它的唯一参数是a ParamArray,这意味着如果你直接从VBE7.dll调用它,你需要创建一个数组,让它为你提供相同的数组...这部分解释为什么它不在typelib上 - 一个COM调用需要做同样的事情,并且编组基本上会做与你期望函数返回相同的事情.

LBound并且UBound甚至不在导出表中显示为函数,因此我的猜测是它们在内部处理的类似于"关键字"而不是第一类函数.这使得一些意义,因为它是相当琐碎检查的范围SAFEARRAY如果你有一个指针自动化结构(你只是索引到rgsabound阵列在它的结束和阅读cElementslLbound从中再次猜测,但我假设这允许灵活地使用固定长度和可变长度数组LBoundUBound使用它们.在固定的情况下,数组基本上被管理为带有索引器的内存块(更像是VT_CARRAYa VT_SAFEARRAY).我d想象一下,内部处理比提供一流的功能更容易或更方便.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有