我正在尝试使用getref从与测试关联的函数库中调用函数。
我的代码-

在行动1

str = "sample"
msg = "hi"
x = GetRef("Function_"&str)(msg)
msgbox x

在函数库中,
Function Function_sample(strMsg)
    Function_sample = strMsg
End Function

我遇到了错误-



但是,如果将函数置于相同的 Action 中,则效果很好。
如何使用变量中的函数名称调用函数库中的函数(带有参数)?

最佳答案

简约的工作示例:

Lib.vbs:

Option Explicit

Function Twice(n)
  Twice = n + n
End Function

Main.vbs:
Option Explicit

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")

ExecuteGlobal goFS.OpenTextFile(".\lib.vbs").ReadAll()

Dim fpTwice : Set fpTwice = GetRef("Twice")

WScript.Echo fpTwice(42)

输出:
cscript main.vbs
84

错误消息“...运行时错误:无效的过程调用或参数:'GetRef'”指示应归咎于(函数库的)导入。

更新:

认为,可以假设VBScript引擎保留一个将子/函数/方法名称与可调用代码相关联的表,以便能够进行文字/直接调用:
n = Twice(11)

并且GetRef(“Twice”)访问此表。因此,当文字调用成功时,我永远都不会期望间接/“函数指针”调用或GetRef()失败。

但是根据thisthat,至少有四种方法可以将库/模块“导入”到QTP中,并且由于我不使用QTP,因此我不能排除这些方法中的某些(甚至全部)可以做些什么愚蠢地导致您描述的错误行为。

关于vbscript - 如何使用变量中的函数名称调用函数库中的函数(带有参数)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16691353/

10-13 07:57
查看更多