Arr: array of string;
数组Arr[1]中存放的是时间  现在想用Arr[1]和当前系统时间DateToStr(now)比较然后输出不同的内容 
if   (Arr[1] < DateToStr(now)) then
    begin
    Image1.Canvas.Font.Color := clred 
    end;
    if  (Arr[1] >= DateToStr(now)) then
    begin
    Image1.Canvas.Font.Color :=clgreen;  
    end;请问这样写错误在哪里?

解决方案 »

  1.   

    得看你Arr是如何存储的了,是 2001-1-1还是2001-01-01呢,这个你要和DateToStr格式相同才能正确比较
      

  2.   

    if (DateToStr(Arr[1]) < now then如果不比较时间,只比较日期,最好带上Trunc
    if (Trunc(DateToStr(Arr[1])) < Trunc(now) then
      

  3.   

    晕,打错了,是StrToDate如果考虑容错性,建议用
    StrToDateDef(Arr[1] , 0)
      

  4.   

    To kiboisme(蓝色光芒) :Trunc(StrToDate(Arr[1])) < Trunc(now) 这样可以 我的Arr是存储的是2011-5-7请问Trunc(now)得到的是2011-5-7呢? 还是201157 ? 还是20110507?
      

  5.   

    日期直接比较就可以了吧?还转来转去的?
    例如:
    var
      D0,D1:TDateTime;
    begin
      D0 := StrToDateTime('2011-05-01');
      D1 := StrToDateTime('2011-05-01');
      if D0 > D1 then
      ShowMessage(DateTimeToStr(D0)) else
      ShowMessage(DateTimeToStr(D1))
    end;
      

  6.   

    更正一下代码
    var
      D0, D1: TDateTime;
    begin
      D0 := StrToDateTime('2011-05-02');
      D1 := StrToDateTime('2011-05-01');
      if D0 > D1 then
        ShowMessage(DateTimeToStr(D0))
      else
        ShowMessage(DateTimeToStr(D1))
    end;
      

  7.   


    +1TDateTime类型可以当作浮点型数据直接进行比较
      

  8.   

    之所以要用Trunc(),考虑到浮点数奇偶位而已,碰巧的情况下,n和m本来值一样,但是去不相等,如果只比较日期,建议用上Trunc()