VB6 重新变暗错误"This array is fixed or temporarily locked"



我有一个全局数组变量 g (),它以 3 个对象值开头。然后,我调用一个 sub,它使用 g 中的项目之一作为输入,并且需要在 g 中创建其他项目,并更新提供的项目。

类似的东西

声明:

公共 g() 作为分支

初始化:

分辨率 g (1 至 3)
集合 g(1) = br1
集合 g(2) = br2
集合 g(3) = br3

子的代码调用

呼叫 chg (g(2))

Public Sub chg (ByRef br As branch)
r = UBound(g)
分辨率 g (1 到 r + 2)
...(代码的其余部分)
结束子

Redim 语句上的代码错误,错误文本为"此数组已修复或暂时锁定"。

为什么我不能更改此子中数组的大小?如何做不同?

来自 MSDN 文档:

您尝试重新调整模块级动态数组的尺寸,其中 元素已作为参数传递给过程。例如,在 下面的代码,ModArray 是一个动态的模块级数组,其 第四十五个要素正在通过参考测试程序传递。

无需在此传递模块级数组的元素 案例,因为它在模块的所有过程中都是可见的。然而 如果传递元素,则锁定数组以防止释放 过程中引用参数的内存,导致 过程返回时不可预测的行为。

Dim ModArray() As Integer    ' Create a module-level dynamic array.
Sub AliasError()
   ReDim ModArray(1 To 73) As Integer
   Test ModArray(45)    ' Pass an element of the module-level array to the Test procedure.
End Sub
Sub Test(SomeInt As Integer)
   ReDim ModArray (1 To 40) As Integer  ' Error occurs here.
End Sub

一个想法是传递数组的索引而不是对象本身。

最新更新