0/5 (5 avis)
Snippet vu 3 878 fois - Téléchargée 4 fois
function Difference_entre_deux_heure(apc,bpc:pchar):string; var cumulation:string; time_hour,time_minute,time_seconde:integer; time_hour_terminal,time_minute_terminal,time_seconde_terminal:integer; time_begin,time_ending,time_difference:integer; hour,minute,seconde:integer; begin //Détermination de l'heure de début de traitement time_hour:=strtoint(apc[0]+apc[1]); time_minute:=strtoint(apc[3]+apc[4]); time_seconde:=strtoint(apc[6]+apc[7]); //Détermination de l'heure de fin de traitement time_hour_terminal:=strtoint(bpc[0]+bpc[1]); time_minute_terminal:=strtoint(bpc[3]+bpc[4]); time_seconde_terminal:=strtoint(bpc[6]+bpc[7]); //Déplacement des heures inférieurs au temps de départ. if time_hour_terminal<time_hour then time_hour_terminal:=time_hour_terminal+24; //Cumul des temps time_begin:=3600*time_hour+time_minute*60+time_seconde; time_ending:=3600*time_hour_terminal+time_minute_terminal*60+time_seconde_terminal; time_difference:=time_ending-time_begin; hour:=time_difference div 3600; time_difference:=time_difference-hour*3600; minute:=time_difference div 60; seconde:=time_difference-minute*60; if hour < 10 then cumulation:='0'+inttostr(hour) else cumulation:=inttostr(hour); cumulation:=cumulation+':'; if minute<10 then cumulation:=cumulation+'0'+inttostr(minute) else cumulation:=cumulation+inttostr(minute); {Denis Bertin Stéphane} cumulation:=cumulation+':'; if seconde<10 then cumulation:=cumulation+'0'+inttostr(seconde) else cumulation:=cumulation+inttostr(seconde); result:=cumulation; end; {Différence_entre_deux_heure}
5 juin 2018 à 00:01
Modifié le 4 juin 2018 à 16:12
Le problème à résoudre est mal posé. Le résultat d'une fonction qui retourne la
différence entre deux heures dont le jour est indéterminé n'a pas de sens.
Dans la logique d'une différence entre deux heures du même jour, si l'on veut pouvoir passer les heures à comparer dans un ordre indifférent, on peut faire :
Cordialement.
4 juin 2018 à 14:51
Modifié le 4 juin 2018 à 14:47
Tu m'as grillé sur ce coup, Cirec !
J'étais en train de tester le code de notre ami, et voici le fruit de ma réflexion :
Il y a un gros bug si la valeur des minutes de bpc est inférieures à celle des minutes de apc. Par exemple si apc = '05:18:06' et bpc = '05:17:03'.
Je n'ai pas compris l'utilité de passer des PChar en paramètres...
Voici un code efficace malgré sa simplicité :
Car attention à la subtilité : pour avoir l'écart entre les 2 Time, , il faut additionner la durée restant à effectuer jusqu'à minuit par Time1+ le temps déjà effectué par Time2, sinon le calcul sera faux dès que la valeur de Time2 est inférieure à celle de Time 1.
Bref, dit différemment, il ne suffit pas de faire la différence entre le temps de plus grande valeur moins le temps de moindre valeur.
Cordialement.
4 juin 2018 à 13:39
pourquoi ne pas faire tout simplement:
fonctionne tout aussi bien à l'inverse:
Cordialement,
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.