PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → ChaineVersDuree avec une heure supérieure à 100
ChaineVersDuree avec une heure supérieure à 100
Débuté par GuillaumeCRC, 22 juil. 2024 10:39 - 3 réponses
Membre enregistré
42 messages
Posté le 22 juillet 2024 - 10:39
Bonjour,

Je rencontre un problème avec la procédure "ChaineVersDurée" de WinDev.
J'y passe la chaine "106h45", mais elle me retourne une durée de 6h45 avec le forma "HHhMM", si je met "JHHhMM" il me retourne 1 jour et 6h 45.

Y a t-il un moyen d'avoir une durée de plusieurs centaines d'heures ? Sachant qu'il fait tout seul la converssion heures en jour pour la durée (99h me donne 4 jour et des patates)

Merci.
Membre enregistré
2 054 messages
Posté le 22 juillet 2024 - 11:42
Bonjour Guillaume,

Vous voulez des minutes en format Date-Heure et des heures en format décimal... ;(

Utilisez des variables de type Durée et faites la conversion par formule :
par exemple avec une division ou en passant par ChaîneVersDurée() puis ExtraitChaîneEntre()

--
Bon dev,
Jean-Pierre
Message modifié, 22 juillet 2024 - 11:42
Membre enregistré
42 messages
Posté le 22 juillet 2024 - 14:37
Merci pour votre retour, j'ai écrit une fonction surchargée de chaine vers durée pour gérer mon cas.

si ça peut intéresser du monde :
Procedure G_ChaîneVersDurée(PAR_Chaine est une chaîne) : Durée
vRetour est une Durée

//Le format envoyé doit être sous la forme HHhMM.
vNbJour est une chaîne = Val((Gauche(PAR_Chaine,(Position(PAR_Chaine,"h")-1)))) / 24
vNbMinute est une chaîne = (Droite(PAR_Chaine,Taille(PAR_Chaine) - (Position(PAR_Chaine,"h"))))
vNbHeure est une chaîne = Arrondi(Val("0."+(Droite(vNbJour,Taille(vNbJour)-(Position(vNbJour,".")))))*24)
vNbJour = (Gauche(vNbJour,(Position(vNbJour,".")-1)))
vRetour.Jour = vNbJour
vRetour.Heure = vNbHeure
vRetour.Minute = vNbMinute
RENVOYER vRetour
Membre enregistré
272 messages
Posté le 10 octobre 2024 - 18:28
Bonjour Guillaume,
Très intéressante cette procédure, merci.
Cependant, si vous me permettez, vous devriez peut-être faire connaissance avec la fonction ExtraitChaine()
qui améliorerait au moins sa lisibilité.
Je reprend en tout cas votre code avec les modifications qui s'imposent :)
Bons devs !

--
René MALKA