2011-10-04 44 views
3

我试图写一个脚本在QTP这样是否可以调用名称存储在vbscript中的字符串的函数?

Public Function sayhi 

msgbox "hi" 

end 

Dim level0 

dim count1 
count1 = DataTable.GetSheet("Action1").GetRowCount 
msgBox count1 

For counterVariable = 1 to count1 
    functionname = DataTable.value("methodnames","Action1") 
    call functionname 
    DataTable.GetSheet("Action1").SetCurrentRow(counterVariable) 
Next 

承担functionname都将有一个价值说“sayHi的”。我可以使用该值来调用该函数吗?就像我在代码“call functionname”中所做的一样。

我知道它不工作,但如何做这样的调用?

回答

6
Option Explicit 

function abc(a) 
    MsgBox a 
End function 

dim run : run = "abc ""Hallo""" 
execute run 

execute方法可以做,如果其在数据表这


Public Function sayhi 

msgbox "hi" 

end 

Dim level0 

dim count1 
count1 = DataTable.GetSheet("Action1").GetRowCount 
msgBox count1 

For counterVariable = 1 to count1 
    functionname = "call " & DataTable.value("methodnames","Action1") 
    execute functionname 
    DataTable.GetSheet("Action1").SetCurrentRow(counterVariable) 
Next 

将调用sayHi的。

+0

将如果值ABC在可变这项工作? – thndrkiss

+1

只是在一个字符串变量中构建你想要的命令行。 – Totonga

+0

很好的答案。 。如果这些方法存在于同一个文件中的vbs文件中,该怎么办。它没有选择该文件中的方法。 。 – thndrkiss

12

使用GetRef()来获得一个 '指针'/参考Sub或功能:

Option Explicit 

Sub S1(s) 
    WScript.Echo "S1:", GetRef("F1")(s) 
End Sub 

Function F1(s) 
    F1 = UCase(s) 
End Function 

Dim sName : sName  = "S1" 
Dim subS1 : Set subS1 = GetRef(sName) 

subS1 "abc" 

输出:

cscript getrefdemo.vbs 
S1: ABC 
+0

使用GetRef,你可以传递一个指向函数/子的指针,它不在通过指针调用它的代码范围之外。通过执行,它必须在范围内。这是一个体面的差异,GetRef理念+1,与QTP imho相结合的方式非常流行。 – TheBlastOne

相关问题