首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于timer的一个有关问题

2014-01-09 
关于timer的一个问题下面的代码怎么总也没有相等的时候其中timer1.interval:1000times设为下一分钟的某

关于timer的一个问题
下面的代码怎么总也没有相等的时候

其中
timer1.interval:=1000;
times设为下一分钟的某秒,如'20:16:17'



procedure TForm1.Timer1Timer(Sender: TObject);
var
    t1,t2: TTime;
begin
    t1 := StrToTime(leftStr(times,8));
    t2 := time;
    if t2 <> t1 then exit;

    Application.MessageBox('时间到了!','提醒');
    BtnStart.Enabled := True;
end;

[解决办法]

procedure TForm1.tmr1Timer(Sender: TObject);
var
  t1, t2: TTime;
begin
  t1 := StrToTime(leftStr(times, 8));
  t2 := time;
  if t2 <= t1 then
    exit;
  Application.MessageBox('时间到了!', '提醒');
end;

[解决办法]
可能那个相等的瞬间被其他的代码消耗了……
[解决办法]
这是因为time()取的时间精确到毫秒,你只拿精确到秒的时间和它比较,刚好相等的概率是很低的。

可以写一个精确到秒的时间比较:
function SameTimeSec(const A, B: TDateTime): boolean;
begin
  result := ABS(Frac(A) - Frac(B)) < OneSecond;
end;

热点排行