类型不匹配:'UBound'

问题描述 投票:0回答:1

为什么我会收到此错误;

类型不匹配:'UBound'

Function JumbleArray(ByVal aArray)
    Dim iUpper, iLower, iLoop, iSwapPos, varTmp
    iUpper = UBound(aArray)
    iLower = LBound(aArray)

    Randomize Timer
    For iLoop = iLower To iUpper
        iSwapPos = Int(Rnd * (iUpper + 1))

        varTmp = aArray(iLoop)
        aArray(iLoop) = aArray(iSwapPos)
        aArray(iSwapPos) = varTmp
    Next

    JumbleArray = aArray
End Function

Dim strTestArray
strTestArray = "1,2,3,4,5,6,7,8"

Shuffle = JumbleArray(strTestArray)

此代码是在其他地方提出的,但没有任何关于它不起作用的报告。看起来应该可以,但事实并非如此。

此处显示的代码是您需要的一切。只需运行代码,您就会看到错误。

vbscript asp-classic
1个回答
2
投票

据我所知,有两个主要问题。

  1. 函数

    UBound()
    期望一个有效的数组返回上限,其他任何东西都会导致引发
    Type mismatch
    错误。

    这里的问题是该函数需要一个

    Array
    ,但它正在传递一个
    String
    (如评论中所述)。如果字符串包含有效的字符串数组(可以通过分隔符解释为一维数组的字符串),您可以使用
    Split()
    函数将字符串转换为有效数组,并使用
    IsArray()
    检查有效数组返回数组。

  2. 函数

    JumbleArray()
    返回一个
    Array
    ,不能仅使用
    Response.Write()
    输出到页面。要输出它,您首先需要使用
    IsArray()
    检查其有效数组,然后使用
    Join()
    输出值或使用循环迭代数组中的每个元素。

调用函数时尝试这个;

strTestArray = "1,2,3,4,5,6,7,8"
Dim TestArray: TestArray = Split(strTestArray, ",")
If IsArray(TestArray) Then
  TestArray = JumbleArray(TestArray)
  If IsArray(TestArray) Then
    Call Response.Write(Join(TestArray, ","))
  End If
Else
  Call Response.Write("Not a valid array")
End If
© www.soinside.com 2019 - 2024. All rights reserved.