Is it possible to call a function whose name is stored in a string in vbscript?

后端 未结 3 1639
庸人自扰
庸人自扰 2020-12-06 08:39

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\").Ge         


        
相关标签:
3条回答
  • 2020-12-06 09:03
    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.

    0 讨论(0)
  • 2020-12-06 09:16

    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
    
    0 讨论(0)
  • 2020-12-06 09:19

    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

    0 讨论(0)
提交回复
热议问题