2009-08-11 3 views
0

Je développe une minuterie en Delphi 2009. J'utilise actuellement ce qui suit pour formater mon affichage de la minuterie:Affichage d'un temps négatif à Delphes

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

et cela comme affiche attendus le temps:

00:04:35 

Cependant, quand je vais dans le temps négatif, il affiche tout naturellement comme:

00:-04:-35 

J'ai besoin t il a le temps d'afficher comme:

-00:04:35 

Des idées?

Répondre

12

Préfixe: = ''; si (Heures < 0) ou (Minutes < 0) ou (Secondes < 0) puis Préfixe: = '-';

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

Au revoir.

+1

Merci ne peut pas croire à quel point cela a été simple, ... pense que je l'ai été à regarder trop longtemps ... – James

+3

Pourquoi ne vous appelez pas 'Format ('% 2d.%. 2d:%. 2d ', [...]) 'avec les trois valeurs en une fois? – mghie

+0

Ah jamais si de cette mghie merci! – James

0

Eh bien, vous formatez chaque nombre séparément, donc il n'est pas surprenant que vous obteniez un signe négatif sur chacun d'eux. Essayez ceci:

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

Nice, jugé utile même s'il ne compile même pas. – mghie

+0

Désolé, je n'ai pas fait de Pascal depuis HS :) – Daniil

+0

Les erreurs de syntaxe ont été corrigées. – mghie