vb中参数传递方式,vb两个窗口之间如何传递参数

首页 > 实用技巧 > 作者:YD1662023-10-27 06:25:53

将String类型传递给Long类型,会发生什么错误?

结果很显然,会发生类型不匹配的错误,如下图所示:

vb中参数传递方式,vb两个窗口之间如何传递参数(5)

在传参时,类型匹配,是最起码的

2、传数组,动不动就红色告警,尽耽误事儿

数组在任何一种编程语言中,都占据着举足轻重的地位。尤其在业界,普遍认为VB/VBA的性能存在某种问题的情况下,数组就成为很多人提高性能的法宝。相信很多人都曾遇到过,要将数组作为参数进行传递,尽扯拐,比如下面这:

vb中参数传递方式,vb两个窗口之间如何传递参数(6)

好吧,那删掉吧,默认使用ByRef好了,再来...

vb中参数传递方式,vb两个窗口之间如何传递参数(7)

诸位,就没遇见过?就是这么神奇!

什么叫参数必须为变体?那前面的Integer,String等,就叫变体了!什么是缺省的内部类型?数组不是数据类型,不能传递?你是不是默默地将Optional关键字取消了!尽管,有时候这个参数组,一个参数也没有,是不是也会强颜欢笑地,随便传个什么,来表示表示?

3、函数指针,动态调用

关于VB/VBA中的指针问题,前面很多文章里都提到了,读者朋友们可自行关注翻阅以往的文章、头条内容。其实在VB/VBA工程内部,AddressOf关键字就可以获取模块中的函数指针,但是意义不大。因为工程内部,直接可以Call函数名就能使用了,不必大费周章。函数指针,重要的是使用非工程内部的函数,尤其在很多讨巧领域,使用未导出函数。

在VB/VBA中可以使用Declare语句来声明要使用的函数,但是这货不仅效率低,开销大,关键是它是标准调约的呀,而且所用函数必须导出。这意味着什么?

大量优质的C库资源(C调约)没法用了吧,Sqlite数据库不能用了吧,系统很多API不能用了吧,很多讨巧的技能用不上了...少了资源不说,能用的资源又能用好了么?VB/VBA都到指针份上了,谁还会忍受Declare下的各种重复的复制粘贴?VB/VBA号称为自动化服务的,可是连小小的动态调用都搞不定,还谈什么自动化胶水呢?

或许,很多人会觉得函数指针挺简单的,GetModuleHandle GetProcAddress不就行了。获取函数指针,是很简单。但凡事都有然而,不可能每个函数都重复配套一次吧,所以封装动态调用函数的重要性就出来了。

所以这里的动态调用,其实是指封装1个万能调用函数,对就像Invoke函数那样。相信很多朋友都曾尝试过,笔者也见过很多实现,但都很蹩脚,其中尤其是参数的处理。我们知道,Win32的API成千上万,更不要说第三方库中的API了。这么多函数,参数的个数、类型肯定是不一样的。如何在一个万能调用函数中,处理这些不同呢?

二、患难中见真情

限于篇幅和时间精力,上述列举的只是VB/VBA编程中诸多问题中的冰山一角。若是,未能深入掌握VB/VBA的语言特点,想必很容易开始嫌弃VB/VBA,从而投向其他专业工具。究竟是福是祸,这就不好说了。毕竟人生苦短,能简单何必复杂!

1、传参类型不匹配,Variant可是传参中的Any

遇到『一.1』的问题,在VB/VBA中其实很容易解决,简单地将参数类型声明为Any即可。关于Any类型,在VB/VBA的圈子里,也有很多传说。最信誓旦旦的解释,莫不过将其视为提高效率的某种神秘的危险做法。

vb中参数传递方式,vb两个窗口之间如何传递参数(8)

上一页123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.