HP-UFT / VBscript - 通过带有数组索引引用的函数设置数组值

时间:2016-09-20 14:50:43

标签: vbscript hp-uft



我有一个问题,即从VBScript中的类中的数组中分配/检索正确的值。每当我尝试通过独立函数设置数组的值时,它就不起作用而且我不断获得旧的数组值。 这是一个示例代码:

Class NewClass

    Public TestValues

    Public Sub Init()
        TestValues = array("value0", "value1", "value2")
    End Sub
End Class

Class NewFunctions

    Public Function GetValue(xRef)
        GetValue = xRef(2)
        print "Value within Function: " & xRef(2)
    End Function

    Public Sub SetValue(xRef, xValue)
        xRef(2) = xValue
        print "Value within Sub: " & xRef(2)
    End Sub
End Class

Dim MyClass, MyFunction
Set MyClass = New NewClass
Set MyFunction = New NewFunctions

现在,当我尝试使用 SetValue Sub设置给定数组 MyClass.TestValues 索引2 时,它声称新的已经设置了值,但是当我为此数组调用 GetValue 或直接打印出 MyClass.TestValues(2)的内容时,我仍然会获得旧值:

MyFunction.SetValue MyClass.TestValues, "newvalue2"

返回: Sub:newvalue2 中的值


但是当我使用GetValue检索值时:

 MyFunction.GetValue MyClass.TestValues

返回: Function:value2 中的值,这是旧值。


但是,当我直接设置数组时:

Myclass.TestValues(2) = "newvalue2"
然后打电话给:

MyFunction.GetValue MyClass.TestValues

给出了正确的结果:函数中的值:newvalue2

我不确定这是否是一般的VBScript行为,我错误地希望以这种“脏”方式更改数组值,或者这是否与HP-UFT(统一功能测试)相关,因为这是我可以的地方观察这一点。 我也不是一个熟练的VBScripter,所以我感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这是documented行为

  

类中的参数

     

如果参数指定为ByRef,则参数传递   如果作为参数发送的变量在类

中,则为value