当然不会相等,这两个time变量都是局部变量

解决方案 »

  1.   

    哦,看错,贴完整的代码,这个 times 是啥样格式的时间字符串
      

  2.   

    times:='20:50:1520:52:1520:53:1520:54:15'  就这样的,每8位hh:mm:ss
      

  3.   


    times:='20:50:1520:52:1520:53:1520:54:15'  就这样的,每8位hh:mm:ss
      

  4.   


    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;
      

  5.   


    如果是为了做出相等时弹对话框的效果,我试过把t2变成字符串再和leftstr(times,8)比较,可以成功。我是想知道为什么比时间就不相等
      

  6.   

    这是因为time()取的时间精确到毫秒,你只拿精确到秒的时间和它比较,刚好相等的概率是很低的。可以写一个精确到秒的时间比较:
    function SameTimeSec(const A, B: TDateTime): boolean;
    begin
      result := ABS(Frac(A) - Frac(B)) < OneSecond;
    end;
      

  7.   

    设timer1.interval:=1;的成功概率应该比较大。