PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → ChaineVersDuree avec une heure supérieure à 100
ChaineVersDuree avec une heure supérieure à 100
Started by GuillaumeCRC, Jul., 22 2024 10:39 AM - 2 replies
Registered member
42 messages
Popularité : +2 (2 votes)
Posted on July, 22 2024 - 10:39 AM
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.
Registered member
2,004 messages
Popularité : +53 (65 votes)
Posted on July, 22 2024 - 11:42 AM
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 modified, July, 22 2024 - 11:42 AM
Registered member
42 messages
Popularité : +2 (2 votes)
Posted on July, 22 2024 - 2:37 PM
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