VB6 redim错误“;此阵列已固定或暂时锁定";

VB6 redim错误“;此阵列已固定或暂时锁定";,vb6,dynamic-arrays,Vb6,Dynamic Arrays,我有一个全局数组变量g(),它以3个对象值开始。 然后我调用一个sub,它使用g中的一个项作为输入,需要在g中创建其他项,并更新提供的项 类似于 声明: 公共g()作为分支 初始化: 重读g(1到3) 集合g(1)=br1 集合g(2)=br2 集合g(3)=br3 子系统的代码调用 呼叫呼叫中心(g(2)) 潜艇 公共分公司(ByRef br As分行) r=UBound(g) 重拨g(1至r+2) ... (代码的其余部分) 端接头 Redim语句中的代码错误,错误文本为“此数组已修复或暂时

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

类似于

声明:

公共g()作为分支

初始化:

重读g(1到3)
集合g(1)=br1
集合g(2)=br2
集合g(3)=br3

子系统的代码调用

呼叫呼叫中心(g(2))

潜艇

公共分公司(ByRef br As分行)
r=UBound(g)
重拨g(1至r+2)
... (代码的其余部分)
端接头

Redim语句中的代码错误,错误文本为“此数组已修复或暂时锁定”


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

来自MSDN文档:

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

在这种情况下,不需要传递模块级数组的元素 案例,因为它在模块中的所有过程中都可见。然而, 如果传递了一个元素,数组将被锁定以防止释放 程序中参考参数的内存不足,导致 过程返回时出现不可预测的行为


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

谢谢-我将只将索引传递给子对象。我已经很长时间没有使用VB6了,但是是否需要Redim PREVICE来保持对Redim上现有元素的引用?
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