PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Calcul sur les heures - comportement bizarre ?
Calcul sur les heures - comportement bizarre ?
Débuté par Christian, 30 nov. 2005 12:28 - 9 réponses
Posté le 30 novembre 2005 - 12:28
Bonjour à tous.
J'ai un problème de calcul avec les heures.
La syntaxe 1 me retourne une erreur, alors que la syntaxe 2 fonctionne.
Ce qui est déroutant est que les deux devraient marcher...

Exemple:
heure1, heure2 sont des heures
heure1="0945"
heure2="0130"

//syntaxe 1 ne marche pas
heure1..heure=heure1..heure+ heure2..heure
heure1..minute=heure1..minute+ heure2..minute

//syntaxe 2 correct
heure1..heure+=heure2..heure
heure1..minute+=heure2..minute


Avez vous une explication ?



--
Bon développement à tous
Christian

cciochir@ _ at _ cmii.fr
Posté le 30 novembre 2005 - 13:06
Christian avait écrit le 30/11/2005 :
Bonjour à tous.
J'ai un problème de calcul avec les heures.
La syntaxe 1 me retourne une erreur, alors que la syntaxe 2 fonctionne.
Ce qui est déroutant est que les deux devraient marcher...

Exemple:
heure1, heure2 sont des heures
heure1="0945"
heure2="0130"

//syntaxe 1 ne marche pas
heure1..heure=heure1..heure+ heure2..heure
heure1..minute=heure1..minute+ heure2..minute

//syntaxe 2 correct
heure1..heure+=heure2..heure
heure1..minute+=heure2..minute


Avez vous une explication ?


Je n'ai pas d'explication mais par contre pour ma part je privilégie toujours l'utilisation des opérateurs ++, +=, --, -= car étant moins consommateur de
cycles et plus succint comme code, mais sans doute des habitudes personnelles ^^.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 30 novembre 2005 - 13:13
Pascal F vient de nous annoncer :
Christian avait écrit le 30/11/2005 :
Bonjour à tous.
J'ai un problème de calcul avec les heures.
La syntaxe 1 me retourne une erreur, alors que la syntaxe 2 fonctionne.
Ce qui est déroutant est que les deux devraient marcher...

Exemple:
heure1, heure2 sont des heures
heure1="0945"
heure2="0130"

//syntaxe 1 ne marche pas
heure1..heure=heure1..heure+ heure2..heure
heure1..minute=heure1..minute+ heure2..minute

//syntaxe 2 correct
heure1..heure+=heure2..heure
heure1..minute+=heure2..minute


Avez vous une explication ?

Je n'ai pas d'explication mais par contre pour ma part je privilégie toujours
l'utilisation des opérateurs ++, +=, --, -= car étant moins consommateur de
cycles et plus succint comme code, mais sans doute des habitudes personnelles
^^.


Je suis d'accord avec toi mais dans le cas où je veux faire
heure3..heure=heure1..heure+heure2..heure
je suis dans l'impasse !

--
Bon développement à tous
Christian

cciochir@ _ at _ cmii.fr
Posté le 30 novembre 2005 - 13:43
Christian a formulé la demande :
Pascal F vient de nous annoncer :
Christian avait écrit le 30/11/2005 :
Bonjour à tous.
J'ai un problème de calcul avec les heures.
La syntaxe 1 me retourne une erreur, alors que la syntaxe 2 fonctionne.
Ce qui est déroutant est que les deux devraient marcher...

Exemple:
heure1, heure2 sont des heures
heure1="0945"
heure2="0130"

//syntaxe 1 ne marche pas
heure1..heure=heure1..heure+ heure2..heure
heure1..minute=heure1..minute+ heure2..minute

//syntaxe 2 correct
heure1..heure+=heure2..heure
heure1..minute+=heure2..minute


Avez vous une explication ?

Je n'ai pas d'explication mais par contre pour ma part je privilégie toujours
l'utilisation des opérateurs ++, +=, --, -= car étant moins consommateur de
cycles et plus succint comme code, mais sans doute des habitudes personnelles
^^.

Je suis d'accord avec toi mais dans le cas où je veux faire
heure3..heure=heure1..heure+heure2..heure
je suis dans l'impasse !


dans ce cas
heure3..heure+=heure1..heure
heure3..heure+=heure2..heure

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 30 novembre 2005 - 14:27
Salut

C'est comme ça, parce que ...

Charles Petzold évoque un phénomène similaire concernant C# dans son
livre "Programming Microsoft Windows with C#". Et il explique en
substance qu'une personne n'ayant jamais écrit un compilateur ne peut
pas comprendre pourquoi c'est comme ça.

J'ai malheureusement oublié de noter la page.

--
Ciao
Pat Biker
http://aaa.windev.free.fr/
Posté le 30 novembre 2005 - 15:11
Si tu peux apporter des précisions ?
C'est bien intéressant cette affaire !

eric l

"Patrick Biker" <pat.biker@wdgotcha.atspace.com> a écrit dans le message de
news: k36ro15ge82sq0f46orqq999qt1umod3ms@4ax.com...

Salut

C'est comme ça, parce que ...

Charles Petzold évoque un phénomène similaire concernant C# dans son
livre "Programming Microsoft Windows with C#". Et il explique en
substance qu'une personne n'ayant jamais écrit un compilateur ne peut
pas comprendre pourquoi c'est comme ça.

J'ai malheureusement oublié de noter la page.

--
Ciao
Pat Biker
http://aaa.windev.free.fr/
Posté le 30 novembre 2005 - 15:37
Salut

Je n'ai jamais écrit de compilateur et je n'ai certainement pas le
niveau de monsieur Petzold.

Je ne me risquerait pas à une explication.

Il faut savoir qu'il y a un piège (gotcha) et comment le contourner.

--
Ciao
Pat Biker
http://aaa.windev.free.fr/
http://wdgotcha.atspace.com/






On Wed, 30 Nov 2005 14:11:05 +0100, "Eric L." <aze@qsd.com> wrote:


Si tu peux apporter des précisions ?
C'est bien intéressant cette affaire !

eric l

"Patrick Biker" <pat.biker@wdgotcha.atspace.com> a écrit dans le message de
news: k36ro15ge82sq0f46orqq999qt1umod3ms@4ax.com...

Salut

C'est comme ça, parce que ...

Charles Petzold évoque un phénomène similaire concernant C# dans son
livre "Programming Microsoft Windows with C#". Et il explique en
substance qu'une personne n'ayant jamais écrit un compilateur ne peut
pas comprendre pourquoi c'est comme ça.

J'ai malheureusement oublié de noter la page.

--
Ciao
Pat Biker
http://aaa.windev.free.fr/
Posté le 30 novembre 2005 - 16:18
Je pencherais pour quelquechose de plus sioux.

Dans le cas 1 vous ajoutez 2 heures
heure1..heure=heure1..heure+ heure2..heure
(Heure1 et Heure2 sont déclarées de type heure)

Par contre dans le cas 2
heure1..heure+=heure2..heure
le compilateur doit implicitement faire un cast de la valeur de Heure2 en type duree
et vous ajoutez la durée Heure2 à l'heure l'heure1

Ce qui est rend le résultat logique.

Voir dans l'aide en ligne le type durée à ne pas confondre avec le type heure
Posté le 30 novembre 2005 - 19:13
Bernard Berguer a couché sur son écran :

Je pencherais pour quelquechose de plus sioux.

Dans le cas 1 vous ajoutez 2 heures
heure1..heure=heure1..heure+ heure2..heure
(Heure1 et Heure2 sont déclarées de type heure)

Par contre dans le cas 2
heure1..heure+=heure2..heure
le compilateur doit implicitement faire un cast de la valeur de Heure2 en
type duree et vous ajoutez la durée Heure2 à l'heure l'heure1

Ce qui est rend le résultat logique.

Voir dans l'aide en ligne le type durée à ne pas confondre avec le type heure


Je pensais que les deux expressions étaient identiques, mais que pour
faciliter l'écriture on avait "condensé" la syntaxe a=a+b en a+=b
Apparemment ca va plus loin que ca!

--
Bon développement à tous
Christian

cciochir@ _ at _ cmii.fr
Posté le 01 décembre 2005 - 07:57
En fait les 2 types Heure et Duree sont différents
Et dans la plus part des cas, c'est une durée que tu souhaites ajouter à une heure pour déterminer une nouvelle heure.

Faire la somme de duree pour obtenir une durée totale je comprends.
Faire la somme d'une Heure + une duree donne une nouvelle heure.
Mais faire la somme de 2 heures, j'ai du mal à imaginer ce qu'on peut obtenir.

Change tes types heures en type duree, je pense que cela va mieux correspondre à ce que tu souhaites faire.

Bon dev