加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-17 00:18:30 所属栏目:大数据 来源:网络整理
导读:在VB6 / VBA项目引用中,Array(),LBound()和UBound()来自……?当我输入代码时,它们不会出现在自动完成列表(ctrl空间)中,它们不会自动完成,并且必须在文本编辑器识别它们之前完全输入它们.只有当键入左括号时,ToolTipText才会弹出命令语法.此外,它们不会出现
在VB6 / VBA项目引用中,Array(),LBound()和UBound()来自……?当我输入代码时,它们不会出现在自动完成列表(ctrl空间)中,它们不会自动完成,并且必须在文本编辑器识别它们之前完全输入它们.只有当键入左括号时,ToolTipText才会弹出命令语法.此外,它们不会出现在对象资源管理器中.

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

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

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

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

LBound和UBound甚至没有在导出表中显示为函数,所以我的猜测是它们在内部处理更像是“关键字”而不是第一类函数.这是有道理的,因为如果你有一个指向自动化结构的指针,检查一个SAFEARRAY的界限是相当简单的(你只需要在它的末尾索引rgsabound数组并从中读取cElements和lLbound.再次a猜测,但我认为这允许灵活地让LBound和UBound函数同时具有固定长度和可变长度数组.在固定情况下,该数组基本上作为带有索引器的内存块进行管理(更像是VT_CARRAY而不是VT_SAFEARRAY..我想在内部处理这个比提供一流的功能更容易或更方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读