如何检查数组的值是否为空
How to check if a value of an array is empty
我正在编写一个国际象棋程序,必须查看某个值是否为空。我试过了
aPiece
是CommandButtons
的数组。 cmdSquare
是形状的控件数组。
Private aPiece(63) As CommandButton
...
For p = 0 To 63
If IsEmpty(aPiece(p)) Then
aPiece(p).Left = cmdSquare(p).Left
aPiece(p).Top = cmdSquare(p).Top
End If
Next p
所有变量都已声明,似乎是 IsEmpty 函数,它不起作用。
这取决于 aPiece
的数据类型。如果它是一个变体并且您没有为其赋值,则 IsEmpty
将 return 为真。但是,如果它是 String
、Date
、Integer
等,它们会自动初始化(String
将为空字符串,Integer
将为 0 ) 所以 IsEmpty
将 return 为假。
此页面是一个很好的参考:IsEmpty Function - Visual Basic 6.0
IsEmpty
方法仅 returns 对变体有意义的信息。由于数组包含对象,您需要这样检查:
If aPiece(p) Is Nothing Then
然而,这似乎只是答案的一部分。上面的逻辑是说“如果我的数组中没有片段,则更新它的位置”。这对我来说没有意义,并且会产生错误。您还需要添加 Not
如下所示:
For p = 0 To 1
If Not aPiece(p) Is Nothing Then
aPiece(p).Left = cmdSquare(p).Left
aPiece(p).Top = cmdSquare(p).Top
End If
Next p
我正在编写一个国际象棋程序,必须查看某个值是否为空。我试过了
aPiece
是CommandButtons
的数组。 cmdSquare
是形状的控件数组。
Private aPiece(63) As CommandButton
...
For p = 0 To 63
If IsEmpty(aPiece(p)) Then
aPiece(p).Left = cmdSquare(p).Left
aPiece(p).Top = cmdSquare(p).Top
End If
Next p
所有变量都已声明,似乎是 IsEmpty 函数,它不起作用。
这取决于 aPiece
的数据类型。如果它是一个变体并且您没有为其赋值,则 IsEmpty
将 return 为真。但是,如果它是 String
、Date
、Integer
等,它们会自动初始化(String
将为空字符串,Integer
将为 0 ) 所以 IsEmpty
将 return 为假。
此页面是一个很好的参考:IsEmpty Function - Visual Basic 6.0
IsEmpty
方法仅 returns 对变体有意义的信息。由于数组包含对象,您需要这样检查:
If aPiece(p) Is Nothing Then
然而,这似乎只是答案的一部分。上面的逻辑是说“如果我的数组中没有片段,则更新它的位置”。这对我来说没有意义,并且会产生错误。您还需要添加 Not
如下所示:
For p = 0 To 1
If Not aPiece(p) Is Nothing Then
aPiece(p).Left = cmdSquare(p).Left
aPiece(p).Top = cmdSquare(p).Top
End If
Next p