如何检查数组中的值是否为空

3

我在编写一款棋类程序,需要检查某些值是否为空。我尝试使用以下代码:

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函数不起作用。


IsEmpty只针对变体返回有意义的信息。aPiece如何声明?它包含什么? - undefined
它包含了一个按钮数组。 - undefined
2个回答

4

IsEmpty 方法只对变体类型的数据返回有意义的信息。由于该数组包含对象,您需要像这样进行检查:

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

我怀疑OP想知道他的棋盘上的一个方格是否为空,也就是说,不包含任何棋子,并且误解了IsEmpty函数的用途。 - undefined
是的,在上下文中不清楚OP的意图。但是第一个代码片段回答了所提出的问题。 - undefined

1

这取决于 aPiece 的数据类型。如果它是变量且未被赋值,IsEmpty 将返回 true。但是,如果它是 StringDateInteger 等类型,则会自动初始化(String 为空字符串,Integer 为 0),因此 IsEmpty 将返回 false。

一个相当不错的参考资料是这个页面:IsEmpty Function - Visual Basic 6.0


aPiece是一个声明为CommandButton的CommadButtons数组。 私有aPiece(63)作为CommandButton声明。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接