我想问下while语句是不是判断当前时间是否正确,如果不正确,跟随其后的代码就没有存在的价值了!是这样的吗? while True do
  begin
    TimeTo := Time;
    TimeWait := TimeTo - TimeFrom;
    DecodeTime(TimeWait, Hour, Min, Sec, MSec);
    if Sec >= S then Exit;
  end;
end;

解决方案 »

  1.   

    DecodeTime函数用的少,学习一下。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vTime :TDateTime;
      procedure ShowTime;
      var
        Hour,Min,sec,Msec:Word;
      begin
        DecodeTime(vTime,Hour,Min,sec,Msec);    ShowMessageFmt('%.12f'#13'%d,%d,%d,%d',[vTime,Hour,Min,sec,Msec]);
      end;
    begin
      vTime := time;       //获取当前时间  //ShowTime;
      //0.320487557870
      //7,46,30,125  vTime := 0.5;       //自定义时间  ShowTime;
      //0.500000000000
      //12,0,0,0  vTime := -0.5;       //自定义时间  ShowTime;
      //-0.500000000000
      //12,0,0,0  vTime := 0.75;       //自定义时间  ShowTime;
      //0.750000000000
      //18,0,0,0  vTime := -1;       //自定义时间  ShowTime;
      //1.000000000000
      //0,0,0,0end;
      

  2.   

    判断两个时间的差,如果大于预设的变量,则退出while
      

  3.   

    楼主这写法干嘛不换成repeat...until
      

  4.   

    当Sec >= S时不执行,否则一直执行。