Array()函数的行为是否已更改?

时间:2019-08-20 15:09:18

标签: vb6

我在一些旧的VB6代码中存在问题,这似乎与通过使用空参数列表调用Array()函数来创建空数组有关。

help for VBA表示这是合法操作:

  

必需的arglist参数是逗号分隔的值列表,   被分配给包含在数组中的元素   变体。如果未指定任何参数,则长度为零的数组为   已创建。

导致错误的函数的骨骼如下所示。

该函数创建一个空数组,将零个或多个元素添加到该数组,然后将其返回给调用方。 在这种情况下,它不会向该数组添加任何元素,因此尝试返回一个空数组。

Private Function GetActiveRestrictionArray(ByVal Restrictions As String) As Variant

  Dim Result As Variant

  Result = Array()

  'Do some stuff which might call "Redim"
  'but in this case does not.

  GetActiveRestrictionArray = Result

End Function

GetActiveRestrictionArray = Result行现在生成错误“无效的过程调用或参数”

用户报告执行Windows更新后,在Windows 10下会发生此错误。该用户报告说,如果他还原此更新,则错误消失。我不知道那是什么更新。

但是,我现在可以在运行Windows 7的虚拟机上的VB6中生成相同的错误。

实际上,在Result = Array()行之后,如果我将鼠标悬停在变量Result上,则会在工具提示中显示消息“无效的过程调用或参数”(在这种情况下为德语)。

enter image description here

老实说,我不知道这段代码是如何工作的,但是显然可以。

VB6 Array()函数的行为是否可能已更改,特别是在使用空参数列表调用时?