如何在运行时确定在vbscript中调用哪个函数

时间:2015-05-11 06:59:39

标签: vbscript qtp

在我的情况下,可能的输入值范围非常大。因此选择案例方法不起作用。 所以基于我的输入说花... doffodil,lily,rose等,我要调用的函数名称是flowerdoffodil()flowerlily()flowerrose()等。这些函数的Ech已经是定义。 只需要根据我的输入在运行时确定要调用哪一个。 有没有办法在vb脚本中执行此操作? 注意:我是一名新手程序员,我正在使用QTP进行自动化。

1 个答案:

答案 0 :(得分:5)

使用GetRef(),如下所示:

Option Explicit

Function flowerdoffodil()
  flowerdoffodil = "my name is daffodil!"
End Function

Function flowerlily()
  flowerlily = "my name is lily!"
End Function

Function flowerrose()
  flowerrose = "my name is rose!"
End Function

Dim aInp : aInp = Split("doffodil lily rose")
Dim sFnc
For Each sFnc In aInp
    Dim fncX : Set fncX = GetRef("flower" & sFnc)
    Dim sRes : sRes = fncX()
    WScript.Echo sFnc, TypeName(fncX), sRes
Next

输出:

cscript 30161364.vbs
doffodil Object my name is daffodil!
lily Object my name is lily!
rose Object my name is rose!

进一步深思:你可以使用词典:

Dim dicFncs : Set dicFncs = CreateObject("Scripting.Dictionary")
Set dicFncs("doffodil") = GetRef("flowerdoffodil")
Set dicFncs("lily") = GetRef("flowerlily")
Set dicFncs("rose") = GetRef("flowerrose")

并调用函数,如:

Dim sRes : sRes = dicFncs(sFnc)()

(另请参阅:123