QTP脚本下标越界的解决办法(图文详解)
1、VBS(VBScript)作为一种脚本语音,很多时候大家将VBS看作是VB语言的一个简化版,它们之间存在着继承的关系,在这里小编为什么要提到VB语言呢?因为小编即将会用VB语言里面的东西来阐述下标越界。

2、我们通常所遇到的下标越界发生在数组的使用中,所谓下标对应的还有上标,读者可以把上标与下标之间看作是一个范围,而发生下标越界,就是操作者引用了不存在的数组元素,超出的数组元素的范围,从而引发下标越界。

3、下面我为大家写一个简单的脚本例子,来重现下标越界。
例子:
Dim array_test '定义一个数组
array_test=array("张三","李四","王二") ’为数组赋值
msgbox array_test(3) ’打印出数组第3个元素

4、读者从步骤3的例子中有没有发现什么问题?小编第一步就是定义了一个数组名字叫array_test,第二步为这个数组赋值3个数组元素,第三步打印出第3个数组元素。但是脚本运行却发生错误,提示"下标越界"如下图:

5、数组明明定义了3个数组元素,为什么将第三个元素打印出来会提示错误呢?接着读者就跟随小编的脚步进行排查一下吧。
array_test=array("张三","李四","王二")

6、排查方法:
Dim array_test
array_test=array("张三","李四","王二")
For i=1 to 3 '循环打印出数组中的元素
print array_test(i)&i
Next
******************************************
打印出的结果:
李四1
王二2

7、解说:
大家从打印出的结果可以看出循环打印的第一个数组元素是“李四”,但是从数组定义中“李四”应该是第二个元素,说到这里读者可能就会明白脚本在读取数组时是从数组0开始读取,所以在循环1到3时就只打印了数组第2个和第3个元素。

8、修改办法:
将上面给出的例子中的打印msgbox array_test(3)改为msgbox array_test(2)即可以解决下标越界的问题。
Dim array_test '定义一个数组
array_test=array("张三","李四","王二") ’为数组赋值
msgbox array_test(2) ’打印出数组第3个元素
