不得不了解VB中的CallByName
作者:朱先忠 来源:博客 2009年3月12日
<!-- Google广告代码 -->
<script type="text/javascript"><!-- google_ad_client = "pub-7544158037619893"; /* 250x250, 创建于 08-6-3 */ google_ad_slot = "3368625097"; google_ad_width = 250; google_ad_height = 250; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script><script>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script>
一、缘由
这个问题来自于我前段时间主持的一个山东省一级OFFICE模拟考试项目(VB6+OFFICE 2003)。
二、问题描述
(1)我有一批VB过程,如下所示:
--------------------------------------------------------------------------------
Public Sub Word01(file1 As String)
Public Sub Word02(file1 As String)
Public Sub Word03(file1 As String)
......
--------------------------------------------------------------------------------
上述过程的作用分别是进行第1套、第2套......试题的WORD部分的评分。
(2)我想实现在最后的评分过程中,通过一处调用(或尽可能少的语句)即实现对上面第N套试题的WORD部分的评分(注意,上面的过程中的参数,即文件名,事先存在于某一个模块文件的一个全局字符串数组中)。
三、找到答案--借助于函数CallByName
我的解决办法如下:
--------------------------------------------------------------------------------
Dim oWord As clsWord
Set Word = New clsWord
CallByName oWord, "Word" & Mid(modMain.Word(iCurrentNumber), 5, 2), VbMethod, sSystemPath & "\" & Word(iCurrentNumber)
--------------------------------------------------------------------------------
四、函数CallByName解释
根据MSDN,CallByName 函数是VB6新引入的函数,它支持在运行时用来获取对象的属性,设置属性或调用方法。其具体的定义如下:
--------------------------------------------------------------------------------
Public Function CallByName( _
ByVal ObjectRef As System.Object, _
ByVal ProcName As String, _
ByVal UseCallType As CallType, _
ByVal Args() As Object _
) As Object
参数
ObjectRef
必选。Object。指向公开属性或方法的对象的指针。
ProcName
必选。String。包含对象的属性名或方法名的字符串表达式。
UseCallType
必选。CallType 枚举类型的枚举成员,表示所调用过程的类型。CallType 的值可以是 Method、Get 或 Set。
Args
可选。ParamArray。参数数组,包含要传递给所调用的属性和方法的参数。
--------------------------------------------------------------------------------
从MSDN中,你能够找到有关CallByName 函数的基本应用举例,但是如果你不细心体会或在实战中经历,却有可能很难意识到此函数的强大威力。
但是,上面说得清楚,必须是调用对象中的方法、属性等。于是,不得已,我便把我的上面诸多VB方法统统放入到一个VB类clsWord中。
于是,最上面代码的前两行是创建上述类的一个实例,而最后一句则是调用此对象实例的方法,如下:
--------------------------------------------------------------------------------
CallByName oWord, "Word" & Mid(modMain.Word(iCurrentNumber), 5, 2), VbMethod, sSystemPath & "\" & Word(iCurrentNumber)
--------------------------------------------------------------------------------
上述调用中,传递给对象实例的参数都可以动态确定,这不正体现了CallByName函数的威力吗?
分享到:
相关推荐
总的来说,`CallByName`是VB.NET中一个便捷的动态调用工具,它可以帮助开发者在不完全了解对象结构的情况下编写灵活的代码。然而,在使用时需权衡其便利性和性能损失,以及是否符合项目的编码规范。在某些特定场景下...
VB代码与WebBrowser控制中的HTML代码,互相控制的例子。 点VB中的按钮,改变网页的显示样式...点网页中的按钮,修改VB中控件的属性,或调用VB中的函数。这只是一个如何实现的示例,没有什么强大功能,代码有中文说明。
调用函数vb程序
本文将详细介绍两种在VB中实现字符串到变量名转换的方法:一种是通过控件对象,另一种则是利用`CallByName`方法。 #### 方法一:通过控件对象转换 在VB中,可以通过`Controls`属性结合字符串操作来间接实现将字符...
在VB对象编程中,我们探讨的核心是对象的概念及其在Visual Basic中的应用。对象是软件工程中的基本构建块,它封装了代码和数据,使得代码更易于管理和维护。VB中的对象具备三个关键特性:属性、方法和事件。 **属性...
在VB(Visual Basic)编程语言中,函数库是程序员日常工作中不可或缺的一部分。这些函数库包含了各种功能各异的函数,能够帮助开发者实现特定的任务,提高代码的效率和可读性。"vb常用函数库,vb函数库"这个压缩包很...
通过以上步骤,我们不仅学会了如何使用VB来监视和响应网页中的事件,而且还深入了解了如何利用自定义类模块来封装复杂的逻辑处理。这种技术不仅可以应用于简单的事件响应场景,还可以扩展到更复杂的自动化任务中。...
在VB.NET编程中,函数是不可或缺的一部分,它们用于执行特定任务,如数据转换、数学计算、字符串操作等。下面我们将详细讨论VB.NET中的一些常用函数。 1. **Abs(number)**:这个函数返回一个数值的绝对值,例如,...
### VB函数知识点详解 #### 一、Abs 函数 **函数功能**: `Abs` 函数用于返回一个数值表达式的绝对值。无论输入的数值是正还是负,`Abs` 函数都会返回其正值。 **语法**: ```vb Abs(number) ``` - `number`:...
本篇将详细介绍这些函数的关键知识点,包括但不限于`Abs`、`Array`、`Asc`、`Atn`、`CallByName`、`Choose`、`Chr`、`Command`、`Cos`以及`CreateObject`等函数的用法与应用场景。 #### 1. Abs 函数 - **功能简介**...
8. **集合与对象函数**:在VB.NET中,`Add()`用于向集合添加元素,`Remove()`删除元素,`Item()`访问集合中的特定项,`Count()`获取集合元素数量。 9. **过程调用与参数传递**:`CallByName()`动态调用对象的方法或...
字符串处理在VB中至关重要,`Mid()`、`Left()`、`Right()`函数用于提取字符串中的部分字符,`Len()`计算字符串长度,`Trim()`、`LTrim()`、`RTrim()`用于去除字符串两侧的空格,`InStr()`查找子字符串的位置,`...
根据给定文件的信息,我们可以详细地探讨VB(Visual Basic)中的常用函数与语句,这些是编程中不可或缺的基础部分,对于理解和使用VB语言至关重要。 ### 1. Abs 函数 Abs 函数返回一个数值的绝对值。其语法为 `Abs...
以下是一些VB.NET中常用函数的详细说明: 1. **Abs(number)**:这个函数返回一个数值的绝对值,用于去除数值前面的负号,无论输入的数值是正还是负,都会返回其正数表示。 2. **Asc(String)**:该函数返回一个字符...
在VB6中,面向对象编程是一种强大的开发方法,它基于对象的概念,使代码更易于维护和扩展。VB6的对象有三个关键组成部分:属性、方法和事件。 **属性**是对象的特性,描述对象的状态,比如一个按钮的`Caption`属性...
在VB中,我们通常会编写一个外部函数声明,然后通过`CallByName`或`Declare`语句调用DLL中的函数来执行CPUID指令。 例如,一个简单的VB代码片段可能如下: ```vb Private Declare Function GetCPUID Lib "CPUID_...
综上所述,这份教程深入浅出地介绍了VB6中的面向对象编程技术,包括对象的概念、类与实例的关系、接口的使用、类型检查以及动态调用方法,为学习和实践VB6的OOP提供了坚实的理论基础和实用技巧。