Reputation: 4595
i am trying to write a script in qtp like this
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
assume functionname is going to have a value say "sayhi". Can i use that value to call the function ? like i did in the code "call functionname".
I know it is not working but how to do such call ?
Upvotes: 3
Views: 8978
Reputation: 111
Someone mentioned there was no Include in VBS but you can code one with...
Sub Include(yourFile)
Dim oFSO, oFileBeingReadIn ' define Objects
Dim sFileContents ' define Strings
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFileBeingReadIn = oFSO.OpenTextFile(yourFile & ".vbs", 1)
sFileContents = oFileBeingReadIn.ReadAll
oFileBeingReadIn.Close
ExecuteGlobal sFileContents
End Sub
My source : http://cyreath.blogspot.com/2014/02/vbscript-call-function-in-another-file.html
Upvotes: 0
Reputation: 4366
Option Explicit
function abc(a)
MsgBox a
End function
dim run : run = "abc ""Hallo"""
execute run
The execute method can do this
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
will call sayhi if its in the datatable.
Upvotes: 7
Reputation: 38755
Use GetRef() to get a 'pointer'/reference to a Sub or Function:
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"
output:
cscript getrefdemo.vbs
S1: ABC
Upvotes: 12