var
  TimeNow, TimeEnd: TDatetime;
  Hour, Min, Sec, MSec: Word;
begin
  TimeNow := Time;
  DecodeTime(Time, Hour, Min, Sec, MSec);
  Sec := Sec + aSec;
  TimeEnd := EncodeTime(Hour, Min, Sec, MSec);如果加出来的Sec大于60了,就报错了。

解决方案 »

  1.   

    加入dateUtils单元procedure TForm1.Button1Click(Sender: TObject);
    var
      aa:TDateTime;
    begin
      aa:=IncSecond(now,10);    //加10秒
    end;
      

  2.   

    根据具体情况判断一下,如果Sec大于3600就怎么着(当然还可能更大),如果大于60就怎么着...应该不难弄吧.取余是mod,整除是div...
      

  3.   

    向wks(mex) 朋友学习,原来有函数的...算我灌水好了,呵呵
      

  4.   

    var
      TimeNow, TimeEnd: TDatetime;
      Hour, Min, Sec, MSec: Word;
    begin
      TimeNow := Time;
      DecodeTime(Time, Hour, Min, Sec, MSec);
      Sec := Sec + aSec;
      if sec=60 then
        begin
         sec:=0;
         min:=min+1;
        end;
        ......//以此类推
           
      TimeEnd := EncodeTime(Hour, Min, Sec, MSec);
      

  5.   

    哈哈 wks(mex) 讲的不错 看来我们大家都还想的复杂了。
      

  6.   

    设置systemtime类型的变量,加减不出现问题!
      

  7.   

    var
      TimeNow, TimeEnd: TDatetime;
      Hour, Min, Sec, MSec: Word;
    begin
      TimeNow := Time;
      DecodeTime(Time, Hour, Min, Sec, MSec);
      Sec := Sec + aSec;
      if sec > 60 then
      begin
        Hour := Hour + sec div 3600;
        Min := Min + sec div 60;
        Sec:= sec mod 60;
      end;
      TimeEnd := EncodeTime(Hour, Min, Sec, MSec);
      

  8.   

    var
      TimeNow, TimeEnd: TDatetime;
      Hour, Min, Sec, MSec: Word;
    begin
      TimeNow := Time;
      DecodeTime(Time, Hour, Min, Sec, MSec);
      Sec := Sec + aSec;
      if sec=60 then
      begin
         Hour := Hour + Sec div 3600;
         Min := Min + Sec div 60;
         sec := Sec mod 60;
      end;
      TimeEnd := EncodeTime(Hour, Min, Sec, MSec);
      

  9.   

    var
      TimeNow, TimeEnd: TDatetime;
      Hour, Min, Sec, MSec: Word;
    begin
      TimeNow := Time;
      DecodeTime(Time, Hour, Min, Sec, MSec);
      Sec := Sec + aSec;
      if sec > 60 then
      begin
         Hour := Hour + Sec div 3600;
         Min := Min + Sec div 60;
         sec := Sec mod 60;
      end;
      TimeEnd := EncodeTime(Hour, Min, Sec, MSec);
      

  10.   

    大家想的太复杂了!var
      TimeNow, TimeEnd: TDatetime;
      Hour, Min, Sec, MSec: Word;
    begin
      TimeNow := Time;
      TimeEnd := TimeNow + aSec/24/60/60;如果你理解了 TDateTime的结构就明白了。TDatetime 是一个double 类型,
    他的整数部分是从日期与 1989/12/30 的天数差。
    分数部分 是当日的已过时间与一整天的比。