读书人

简单的数组有关问题

发布时间: 2012-04-03 12:38:19 作者: rapoo

简单的数组问题
一段小程序,就是为了把已经取得的数组分成两个数组
就是把 policyNo 的数组分到 policyNoDoru 和 policyNoGeneral 中去

Dim policyNoDoru() As String
ReDim policyNoDoru(0)
Dim policyNoGeneral() As String
ReDim policyNoGeneral(0)

For indexI = 1 To uKaiYakuInfo(i).iCntPolicyNo
If dflag(iCurCount + indexI) = 1 _
Or dflag(iCurCount + indexI) = 2 Then
indexDoru = indexDoru + 1
ReDim Preserve policyNoDoru(indexDoru)
policyNoDoru(indexDoru) = policyNo(iCurCount + indexI)

Else
indexGeneral = indexGeneral + 1
ReDim Preserve policyNoGeneral(indexGeneral)
policyNoGeneral(indexGeneral) = policyNo(iCurCount + indexI)

End If
然后是对获得的两个数组分别处理
Next indexI

我担心的是分配的过程在循环体内,一次循环后,第二次又没有清空第一次的结果。
也就是我不太明白 ReDim Preserve policyNoDoru(indexDoru) 是干什么的,以及
为什么一开始有个 ReDim policyNoDoru(0)

这段代码是我模仿其他的非循环语句写的,所以我担心清空的问题,谁能解释下,多谢!!! 至于中间的 index之类的可以忽略

[解决办法]
ReDim Preserve policyNoDoru(indexDoru)

将 policyNoDoru 缓冲区重新分配为 indexDoru + 1 个成员,并保留原有成员的固有值(Preserve)。

如果你的数组是在过程内声明的,过程退出后将会释放,在此进来会重建。所以不必担心原有值的问题。

ReDim policyNoDoru(0) 没有意义。因为第一次执行 ReDim Preserve policyNoDoru(indexDoru) 时 indexDoru = 0,完全等效。
[解决办法]

将 policyNoDoru 缓冲区重新分配为 indexDoru + 1 个成员,并保留原有成员的固有值(Preserve)

ReDim policyNoDoru(0) 就好像初始值一样

读书人网 >VB

热点推荐