当前位置:编程学习 > VB >>

List1.RemoveItem 0 溢出 问题

---------
Private Sub List1_Click()
Text1.Text = List1
Text2.Text = List1
Text3.Text = Left(Text1.Text, Len(Text1.Text) - 3)
Text4.Text = Text3.Text + "wav"
Dim Ret As Long
Form2.Refresh
Ret = RSPOggPlay1.OGGVorbisToWav(Text2.Text, Text4.Text)
List1.RemoveItem 0
IF Text1.Text = "0" The
END
END IF
List1.Selected(0) = True
End Sub
---------------------------
当运行一段时间后就提示 List1.RemoveItem 0 溢出 
当RemoveItem到862行的时候 溢出 .......... --------------------编程问答-------------------- if List1.Count>0 then List1.RemoveItem 0 --------------------编程问答-------------------- 不行呀
还是会溢出 --------------------编程问答-------------------- 溢出的话应该是这个表里的内容已经空了,或者是不是Remove的下标是1起点的,现在手头没程序可以测试... --------------------编程问答-------------------- [img=http://mm-img.appspot.com/image/21001/][/img] --------------------编程问答-------------------- 测试了一下空表 remove 0 不会溢出,只会报无效,会不会是别的地方引起的 --------------------编程问答-------------------- 看样子可能是内容太多了,或者哪里有类似死循环一样的代码 --------------------编程问答-------------------- Form2.Refresh 去掉试试? --------------------编程问答-------------------- = =   Form2.Refresh 去掉了
还是不行......
还是到864行 溢出 --------------------编程问答-------------------- 堆栈溢出一般是些套嵌的代码存在,运行时候经常连续的调用 --------------------编程问答--------------------
引用楼主 as310321 的回复:
Private Sub List1_Click()
Text1.Text = List1
Text2.Text = List1
Text3.Text = Left(Text1.Text, Len(Text1.Text) - 3)
Text4.Text = Text3.Text + "wav"
Dim Ret As Long
Form2.Refresh
Ret = RSPOggPlay1.OGGVorbisToWav(Text2.Text, Text4.Text)
List1.RemoveItem 0
IF Text1.Text = "0" The
END
END IF
List1.Selected(0) = True
End Sub

List1.Selected(0) = True触发List1_Click()事件,这样就形成了递归调用,数据多了溢出是正常。

测试以下代码:

Dim f As Boolean

Private Sub Form_Load()
Dim i%
For i = 1 To 1000
   List1.AddItem Format(i, "000")
Next

End Sub

Private Sub List1_Click()
If f Then
   f = False
   Exit Sub
End If

Text1.Text = List1
Text2.Text = List1
Text3.Text = Left(Text1.Text, Len(Text1.Text) - 3)
Text4.Text = Text3.Text + "wav"
Dim Ret As Long
List1.RemoveItem 0
If Text1 = "0" Then
   End
End If

f = True
If List1.ListCount > 0 Then List1.Selected(0) = True

End Sub

--------------------编程问答-------------------- 我用Timer解决了..........
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,