世少赛:VB 死循环...

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 01:24:13
Dim mynow As Long
Public Function Get1()
If mynow <> "10000000" Then
Call Get2 '这个地方造成了死循环
Exit Function
End If
MsgBox "mynow = 10000000"
End Function

Public Function Get2()
mynow = mynow + 1
Call Get1
End Function

Private Sub Form_Load()
Call Get1
End Sub

错误在于无休止的调用
Call Get2
Exit Function
call get2 还没执行完之前,不 exit
造成调用次数太多,溢出

可是,怎么修正呢?
烦请祥解..非常感谢!

你为什么要用反复互相调用的办法来测试?这样当然会溢出!每次 Get1 和 Get2 都没有退出就调用他人,函数调用堆得越来越多了,堆栈就会溢出。

另外,你的比较有问题,就像楼上说的那样。

Dim mynow As Long

Public Function Get1()
Do While mynow <> 10000000
Call Get2
Loop
MsgBox "mynow = 10000000"
End Function

Public Function Get2()
mynow = mynow + 1
End Function

Dim mynow As Long
Public Function Get1()
If mynow <> "10000000" Then ‘就是这里If mynow <> 10000000 Then 你比较字符串做什么啊? Mynow就算10000000了也是个数字!不会等于字符串的
Call Get2 '这个地方造成了死循环
Exit Function
End If
MsgBox "mynow = 10000000"
End Function