首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

简单的数组有关问题

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

简单的数组问题
一段小程序,就是为了把已经取得的数组分成两个数组
就是把   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) 就好像初始值一样

热点排行