小能豆

如何判断数组在 VB6 中是否已初始化?

vb6

将无尺寸数组传递给 VB6 的 Ubound 函数会导致错误,因此我想在尝试检查其上限之前检查它是否已确定尺寸。我该怎么做呢?


阅读 202

收藏
2024-05-22

共1个答案

小能豆

要在尝试使用该函数之前检查数组是否已在 VB6 中指定尺寸UBound,可以将该IsArray函数与错误处理结合使用。 VB6 没有提供直接方法来检查数组是否已标注尺寸,但您可以通过处理UBound传递未标注尺寸的数组时引发的错误来使用解决方法。

这是封装此逻辑的函数:

Function IsArrayDimensioned(arr As Variant) As Boolean
    On Error Resume Next
    IsArrayDimensioned = IsArray(arr) And (Not IsError(LBound(arr)))
    On Error GoTo 0
End Function

解释

  1. IsArray(arr):检查是否arr是一个数组。
  2. LBound(arr):如果arr是无维数组,调用LBound会引发错误。
  3. 错误处理On Error Resume Next即使发生错误,该语句也允许代码继续执行。如果LBound导致错误,IsError(LBound(arr))将返回True

使用示例

该函数的使用方法如下IsArrayDimensioned

Private Sub TestArrayDimensioning()
    Dim undimensionedArray() As String
    Dim dimensionedArray(1 To 10) As String

    If IsArrayDimensioned(undimensionedArray) Then
        MsgBox "The undimensionedArray is dimensioned."
    Else
        MsgBox "The undimensionedArray is not dimensioned."
    End If

    If IsArrayDimensioned(dimensionedArray) Then
        MsgBox "The dimensionedArray is dimensioned."
    Else
        MsgBox "The dimensionedArray is not dimensioned."
    End If
End Sub

详细步骤

  1. 声明数组
  2. undimensionedArray已声明但未标注尺寸。
  3. dimensionedArray声明并标注范围为 1 到 10。
  4. 检查数组是否有维度
  5. 用于IsArrayDimensioned检查每个数组的维度状态。
  6. 显示一个消息框,指示每个数组是否已标注尺寸。

通过使用此函数,您可以在调用UBound或执行需要对数组进行尺寸标注的其他操作之前安全地确定数组是否已进行尺寸标注。这有助于防止运行时错误并确保代码更健壮。

2024-05-22