我有一个分配/检索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
现在,当我尝试设置索引给定阵列的2MyClass.TestValues与的SetValue子,其声称新的值已被设定,但是当我再调用的GetValue该数组或打印出来的MyClass.TestValues(2)直接,我仍然得到了旧的价值观念的内容:
MyFunction.SetValue MyClass.TestValues, "newvalue2"
它返回:差值子内:newvalue2
但是,当我检索与的GetValue值:
MyFunction.GetValue MyClass.TestValues
它返回:价值函数中:VALUE2,这是旧的价值。
我,不过,直接设置数组:
Myclass.TestValues(2) = "newvalue2"
然后美其名曰:
MyFunction.GetValue MyClass.TestValues
给了我正确的结果:功能内值:newvalue2
我不确定是否这是一个普遍的VBScript行为,我希望以这种'肮脏'的方式更改数组值,或者这是否严格与HP-UFT(统一功能测试)相关,因为这是我可以观察到的情况。 我不是一个熟练的VBScripter,所以我很感激任何帮助。
感谢您的回复。然后用** MyFunction.Setvalue **来设置数组值的正确方法是什么(在索引2上)? –
@JoeyJoe,如果'xRef'不需要是一个数组,修改'NewFunctions.SetValue'不要期待一个数组,而是一个对象引用,并调用该对象的一个方法来改变它们的内部状态。如果你不能这样做,就改变'NewClass.TestValues'属性的公开方式,把它包装在一个模仿数组行为的对象中。 –