VB6 redim错误“;此阵列已固定或暂时锁定";
我有一个全局数组变量g(),它以3个对象值开始。 然后我调用一个sub,它使用g中的一个项作为输入,需要在g中创建其他项,并更新提供的项 类似于 声明: 公共g()作为分支 初始化: 重读g(1到3)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(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