2009-08-11 40 views
0

我开发在2009年德尔福的定时器我目前使用以下格式我的计时器显示:显示负时间在Delphi

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

,这如预期显示时间为:

00:04:35 

然而,当我进入负时间是可以理解的显示它:

00:-04:-35 

我需要ŧ他的时间显示为:

-00:04:35 

任何想法?

回答

12

前缀:=''; 如果(小时< 0)或(分钟< 0)或(秒< 0)然后 前缀:=' - ';

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

再见。

+1

由于怎么也不敢相信简单这是...想我已经在它一直盯着太久... – James 2009-08-11 15:33:47

+3

你为什么不叫'格式(“%2D:%。 2d:%。2d',[...]),所有三个值都一起去了吗? – mghie 2009-08-11 15:36:40

+0

啊,从来没有那个mghie谢谢! – James 2009-08-12 07:44:07

0

那么,你格式化每个数字分开,因此它并不令人惊讶,你得到负面信号的所有。试试这个:

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; 
+0

不错,尽管它甚至没有编译,但投票结果很有帮助。 – mghie 2009-08-11 16:27:34

+0

对不起,我自HS以来没有做过任何Pascal :) – Daniil 2009-08-11 19:49:43

+0

修正了语法错误。 – mghie 2009-08-12 04:09:51