ReDim Array语法完整性检查 - 预期语句错误

时间:2014-04-14 19:01:08

标签: vbscript syntax-error qtp

我正在尝试在QTP / VB脚本中重新编写数组,但我不断收到错误:预期声明。

在过去的几个小时里,我已经完成了一百次代码,我只是没有看到缺少的东西,办公室的任何人似乎都不知道缺少什么。

所以这对我来说只是一个理智的检查,并且对这个问题有了新的认识。

以下是包含错误消息的代码行:

 ReDim strTempArray(LBound(AryVar) To (UBound(AryVar) - 1))

或者我可以这样说,我在主题上尝试了很多变化:

 ReDim strTempArray(0 To AryVar.Length - 1)

但它们都有一个共同点,它们都会产生同样无意义的错误: 关于那一行代码的预期陈述。

好吧,也许它与sub的其余部分有关,所以这里是完整的子代码。 基本上它是Sub的一部分,名为RemoveArrayElement:

 Public Sub RemoveArrayElement(AryVar(), intIndexToRemove)
 strTempArray()
 lngX = 0 'As Long
 lngDestinationIndex = 0 'As Long

    ReDim strTempArray(LBound(AryVar) To (UBound(AryVar) - 1))
    'ReDim strTempArray(0 To AryVar.Length - 1)
    lngDestinationIndex = 0

    For lngX = LBound(AryVar) To UBound(AryVar)
        If lngX <> intIndexToRemove Then
            strTempArray(lngDestinationIndex) = AryVar(lngX)
            lngDestinationIndex = lngDestinationIndex + 1
        End If
    Next

    AryVar = strTempArray
 'End If
 End Sub

我还应该补充一点,我确实在文件开头包含了Option Explicit。

注释掉一条给出错误的行确实会使错误消失,这似乎意味着错误确实存在于那行代码而不是其他地方。

那么我错过了什么?

提前致谢!

1 个答案:

答案 0 :(得分:3)

VBScript 数组严格从零开始,因此指定范围(.. To ..)没有任何意义,也不支持(与其他Basic方言相比)。只需使用ReDim Array(UBound)并小心索引。