Отображение отрицательного времени в Delphi - PullRequest
0 голосов
/ 11 августа 2009

Я разрабатываю таймер в Delphi 2009. В настоящее время я использую следующее для форматирования отображения таймера:

Caption := Format('%.2d', [Hours]) + ':' + 
           Format('%.2d', [Minutes]) + ':' + 
           Format('%.2d', [Seconds]);

и это, как и ожидалось, отображает время как:

00:04:35

Однако, когда я впадаю в отрицательное время, оно понятно отображается как:

00:-04:-35

Мне нужно время, чтобы отобразить как:

-00:04:35

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 11 августа 2009

Префикс: = ''; если (Часы <0) или (Минуты <0) или (Секунды <0) тогда Префикс: = '-'; </p>

Caption := Prefix+Format('%.2d', [Abs(Hours)]) + ':' + 
           Format('%.2d', [Abs(Minutes)]) + ':' + 
           Format('%.2d', [Abs(Seconds)]);

Bye.

0 голосов
/ 11 августа 2009

Ну, вы форматируете каждое число отдельно, поэтому неудивительно, что вы получаете отрицательный знак на всех из них. Попробуйте это:

Caption := Format('%.2d', [Abs(Hours)]) + ':' + 
           Format('%.2d', [Abs(Minutes)]) + ':' + 
           Format('%.2d', [Abs(Seconds)]);

if (Hours < 0) or (Minutes < 0) or (Seconds < 0) then begin
  Caption := '-' + Caption;
end;
...