我现在编一个考试程序。但是不知道怎么进行倒计时。
例如:考试时间为2小时,我觉得应该把它化成秒,也就是7200秒,然后在Timer事件里进行Dec,但是还应该在状态栏里显示出剩余时间。
比如:状态栏里显示 距离交卷时间还有 ##时##分##秒 而且 如果现在只剩20分钟的时间了,那么 时 前面应该显示 00时##分##秒
请问各位大哥大姐们 这个问题如何解决。
例如:考试时间为2小时,我觉得应该把它化成秒,也就是7200秒,然后在Timer事件里进行Dec,但是还应该在状态栏里显示出剩余时间。
比如:状态栏里显示 距离交卷时间还有 ##时##分##秒 而且 如果现在只剩20分钟的时间了,那么 时 前面应该显示 00时##分##秒
请问各位大哥大姐们 这个问题如何解决。
mm:=(your_time_second-hh*3600) div 60;//得到分钟数
ss:=(your_time_second-hh*3600-mm*60) div 60;//得到秒数
var A: TDateTime;
begin
A := StrToTime('00:00:00'); //指定目标时间
Caption := TimeTostr(A - Time); //在窗体标题栏上显示剩余时间
end;
年月日都显示出来了
是我拷贝错了么?
如果我把开始时间设为02:00:00,那它在运行时的起始时间就是01:59:58
两小时内根据运行机器的不同怎么也有个10分钟的误差
还是使用WINDOWS API函数来的比较准确 特别是考试这种重要程度比较高的软件queryperformancecounter函数获得当前系统频率记数器的震荡次数
queryperformancefrequency获得高性能频率记数器每毫秒的震荡次数要实现精确的时间控制,可以这样实现
procedure test;
var
Lgtick1,Lgtick2,Lgtick:tlargeinteger;
begin
queryperformancefrequency(Lgtick);获得一秒钟的震荡次数
queryperformancecounter(Lgtick1);获得当前次数
repeat queryperformancecounter(Lgtick2);获得当前次数
util (lgtick1-lgtick2)/lgtick=60*60*2 //两小时的秒数该过程可以精确到微秒级
http://community.csdn.net/Expert/topic/3232/3232306.xml?temp=.1919824