jackael008 发表于 2005-8-30 12:31:10

有个问题问

最近开始用sqabasic,所以不太熟
想问下,如何处理在一个while的循环中,处理时间,比如5秒后跳出循环。
高人帮个忙吧!

gabriel 发表于 2005-8-30 12:55:28

dealyfor(5000)

jackael008 发表于 2005-8-30 13:02:09

楼上的人理解错了我的意思,delayfor只是等待5秒,我希望是在不断循环中,判断时间和开始循环的时间之间大于某个值。
   if(endtime-starttime)>TIMELIMIT
            break;
但就是不知道如何处理时间的计算。

gabriel 发表于 2005-8-30 14:42:28

楼主是说:“比如5秒后跳出循环”,所以我理解成了延迟
这个问题没有遇见过,还要请高手来帮忙

ilovejolly 发表于 2005-8-30 14:54:06

直接根据时间去判断,从编程的角度看,是不能实现的。由于程序语句执行的速度很快,我们变通一下,在循环结束后面加上判断,我觉得就可以达到要求。如果想有更好的精度,可以在每句后面都作判断。

x=当前时间
while(条件)
操作
y=当前时间
if y-x>5秒
goto label1
end if
wend

label1 操作

[ Last edited by ilovejolly on 2005-8-30 at 16:04 ]

jackael008 发表于 2005-8-30 15:33:26

再次谢谢版主
~!!!

ilovejolly 发表于 2005-8-30 16:04:41

上面这个伪代码是有两个结束循环的地方,如果while条件为假,直接wend,如果y-x>5,跳到label1
如果只用时间判断,可以这样

x=当前时间
while(1)
操作
y=当前时间
if y-x>5秒
goto label1
end if
wend

label1 操作

下面是当前时间的代码
   Dim y
   Dim nowh
   Dim nowm
   Dim nows
   nowh=Hour(Now)
   nowm=Minute(Now)
   nows=Second(Now)
   y=TimeSerial(nowhr,nowmin,nowsec)

处理的时候要转换一下类型
页: [1]
查看完整版本: 有个问题问