主题:自己写的程序自己看不懂了 谁能 教教我
聪明一袋烟
[专家分:330] 发布于 2010-08-16 22:46:00
我写了个简单的倒计时效果,倒计时总时间为90分钟,可我现在自己也不明白了为什么x后面要加850才能使显示是倒计时1:30:00开始的样子啊,而且似乎没有一定的换算公式,也就是说你从这个例子无法推断2:00:00到底加多少。
Dim x As Single
Private Sub Form_Load()
x = 90 * 60 [color=FF0000]+ 850[/color]
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
x = x - 0.1
Label1.Caption = CDate(x / 100000)
End Sub
回复列表 (共3个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2010-08-17 10:07:00
这个具体的问题很好解决。
主要在于你才开始写程序,没有发现写注释语句的主要性。
不要怕麻烦,不要怕程序体积大,写注释利人利己。
然后我来看你的程序。
CDate(x)中:
x的整数部分表示日(系统指定的日期【1900年1月1日】为2,然后每天加1)
x的小数部分表示时分秒,使用的方法是分数方式,以0:0:0为0,每秒为1/24/60/60=1/86400。
综上,你的那个(90 * 60 + 850)/100000 的思路是不对的,尽管初值正确,但不能正确计时。例如经过了90*60+850秒(即6250秒,也就是104分10,1小时44分10秒)x才可以为0,即你的计时才归零,而不是你设想的90分钟!估计你当时850是通过不断调整试验出来的数据。
所以建议代码修改为(使用了见名知意的变量和常量名可以适当减少注释):
Dim 剩余时间 As Single
Const 时 = 1
Const 分 = 30
Const 秒 = 0
Const 每秒 = 1 / 86400
Private Sub Form_Load()
Me.Caption = "倒计时"
剩余时间 = ((秒 / 60 + 分) / 60 + 时) / 24
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
剩余时间 = 剩余时间 - 每秒 / 10
Label1.Caption = CDate(剩余时间)
End Sub
板凳
聪明一袋烟 [专家分:330] 发布于 2010-08-17 10:30:00
问题得到很好的解决,谢谢老大徒伤悲,我的问题在于对于cdate()理解错误,我以为小数点后面的是按以毫秒计(受Timer1.Interval属性的影响)其实vb的记录方式是按天,要把秒折合成天不是把其他时间看成秒
3 楼
老大徒伤悲 [专家分:29120] 发布于 2010-08-17 11:19:00
说的对。也归纳的很简练。
祝你顺利。
我来回复