CALCULER SOMME ET MOYENNE DE DURÉES EXPRIMÉES EN MINUTES, SECONDES, CENTIÈMES

Signaler
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Messages postés
4
Date d'inscription
lundi 22 août 2005
Statut
Membre
Dernière intervention
29 décembre 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31651-calculer-somme-et-moyenne-de-durees-exprimees-en-minutes-secondes-centiemes

Messages postés
4
Date d'inscription
lundi 22 août 2005
Statut
Membre
Dernière intervention
29 décembre 2009

Bonjour tous le monde
j'ai un probmème dans mon programme, je n'arrive pas à calculer un total heure avec mon programme le calcul
se fait très bien, mais une fois il dépasse les 24 heures sa remis à 00:00.
Pour cela si quelqu'un peut m'aider en corrigeant mon programme



procedure TForm1.Button3Click(Sender: TObject);
var somme,s : real;

begin
somme := 0;
table1.first; // se pointer vers le premier enregistrement de la table
while not(table1.eof) do // tanque on a pas arriver à la fin de la table
begin
somme := somme + table1.fieldbyname('Nbre_Heures').AsDateTime; // cumul des totaux
table1.next; // passer à l’enregistrement suivant.
end;
edit1.text := TimeToStr(somme); // afficher le cumul des totaux dans le comosant edit1

end;
Messages postés
1724
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2020
6
Tiens, ça faisait un bail, JMP77... ça va, toi ?

"Tu trouves toujours des sujets de sources très interessants et enrichissants merci à toi"

Ben alors là, ça, ça fait plaisir...

Dorénavant, JMP77, je posterai plus que pour toi, lol ;-)

Et un coucou amical à Mauricio qui m'a fait l'honneur de venir faire un tour sur mon source, muito obrigado ;-)

Bonne prog' :p

japee
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Hello Japee,

Comme tu l'as si bien sugérer j'ai modifié ta fonction de calcul de la somme en utilisant DecodeTime et EncodeTime la voici :

function TForm1.CalculeSommeInt2(var Min, Sec, Cent: Integer; tS: TStrings): Integer;
var i: Integer;
STmp: String;
Totale : TDateTime;

begin
Result := 0;
Min := 0;
Sec := 0;
Cent := 0;
Totale := 0;

for i := 0 to tS.Count -1 do
begin
STmp := tS[i];

if STmp = '' then Continue;

try
Inc(Result);
Min := StrToInt(Copy(STmp, 1, Pos(':', STmp) -1));
Delete(STmp, 1, Pos(':', STmp));
Sec := StrToInt(Copy(STmp, 1, Pos(':', STmp) -1));
Delete(STmp, 1, Pos(':', STmp));
Cent := StrToInt(STmp);
Totale := Totale + EncodeTime(0,Min,Sec,Cent);
except
ShowMessage(tS[i] + ' n''est pas un format valide');
Result := 0;
Exit;
end;
end;

ShowMessage(FormatDateTime('nn:ss:z',Totale));
end;

Voila sinon je pense que je laisserai les deux car cela permet de voir comment s'effectue le calcul des heures avec les minutes, les secondes et les centiemes. Avec ta methode on comprend bien le fonctionnement avec encodetime c'est sur ça simplifie la fonction mais c'est moins instructif je trouve.

Tu trouves toujours des sujets de sources très interessants et enrichissants merci à toi.

Allez ca merite un bon 9/10 pour moi à cette source.

Bonne prog,
JMP77.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Salut Japee et bonjour tout le monde en fait...
Pour répondre à DeltaX tu peux faire toute sorte d' operation mathematique avec les TDatetimes (soustraction etc...).
Afficher les 11 commentaires