回复下标超界怎么回事?
回复下标超界怎么回事?
thisform.List1.clear
DIMENSION c(77,5)
DIMENSION m(1,10)
m(1,1)=35
FOR i=1 TO 77
FOR k=1 TO 35
thisform.List1.additem(ALLTRIM(STR(k,2)))
ENDFOR
FOR j=1 TO 5
c(i,j)= INT(m(1,1)*RAND()+1)
thisform.List1.RemoveListItem(c(i,j))
m(1,1)=m(1,1)-1
ENDFOR
thisform.list1.clear
ENDFOR
thisform.timer1.Enabled=.F.
thisform.List1.RemoveListItem(c(i,j))
回复下标超界
怎么回事?
[解决办法]
For k=1 To 35
Thisform.List1.AddItem(Alltrim(Str(k,2)))
Endfor
这段向 List1 添加了35行。
而
For i=1 To 77
要循环77次,每次循环都 Thisform.list1.Clear
所以当循环到 36 时,就 Thisform.List1.RemoveListItem(c(i,j)) 报错了,因为 List1 只有35行
[解决办法]
Create Cursor t1 (zd1 i)
For lnI=1 To 35
Insert Into t1 Values (lnI)
Endfor
Rand(-1)
Select Int(Reccount('t1')*Rand()+1) As 随机数,* From t1 Order By 1
*-- 这时你看看 zd1 列就是不重复的 1-35 的随机数