这个程序那里有问题,怎么运行进入了死循环?
vb吧
全部回复
仅看楼主
level 12
zgzzsn 楼主
这个程序那里有问题,怎么运行进入了死循环?
Private SubForm_Click()
FontSize = 12
Print"现在输出第一行"
Print"等待5秒钟..."
delayloop 5
Print
Print"输出第二行"
Print"等待10秒钟"
Call delayloop(10)
Print
Print"输出第三行"
End Sub
Public Subdelayloop(delaytime)
Const secondinday =24& * 60& * 60&
loopfinish = Timer +delaytime
If loopfinish >secondsinday Then
loopfinish = loopfinish - secondinday
Do While Timer > loopfinish
Loop
End If
Do While Timer <loopfinish
Loop
End Sub
2020年07月25日 03点07分 1
level 15
这种长时间的循环是会陷入假死状态的
可以在循环中加入DoEvents来避免假死
2020年07月25日 03点07分 2
目测【子过程】第一行的【Sub】后面没有空格!
2020年07月26日 07点07分
level 12
zgzzsn 楼主
程序是 等待5和10秒钟 输出下一行 不知怎么进入长时间不出来
计时器的设置 Interval=1000
2020年07月25日 04点07分 3
level 11
If那一行变量名多了一个s吧,建议声明所有变量Option Explicit之类
2020年07月25日 05点07分 4
确实,这种问题是没法一眼看出来的,这是个好建议
2020年07月25日 05点07分
就是那个问题 您有一双慧眼
2020年07月25日 06点07分
这里的老师有求必应,而且能 一言中的
2020年07月25日 06点07分
level 12
zgzzsn 楼主
是的修改以后就没有问题了
谢谢老师指点
下面就正确了
Private Sub Form_Click()
FontSize = 12
Print "现在输出第一行"
Print "等待5秒钟..."
delayloop 5
Print
Print "输出第二行"
Print "等待10秒钟"
Call delayloop(10)
Print
Print "输出第三行"
End Sub
Static Sub delayloop(delaytime)
Const secondinday = 24& * 60& * 60&
loopfinish = Timer + delaytime
If loopfinish > secondinday Then
loopfinish = loopfinish - secondinday
Do While Timer > loopfinish
Loop
End If
Do While Timer < loopfinish
Loop
End Sub
2020年07月25日 06点07分 6
1