Bonjour,
Donc,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 sMsg1, sMsg2, sMsg3 sont des chaînes sTxt est une chaîne sTest est une chaîne dTestDate est une Date hTestHeure est une Heure dhTestDateHeure est une DateHeure sChaineDeTests est une chaîne = "20" + RC + "2014" + RC +"2064" + RC + "201406" + RC + "20140613"+ RC + "201406136" i est un entier POUR TOUTE CHAÎNE sTxt DE sChaineDeTests SEPAREE PAR RC sTest = sTxt dTestDate = sTxt //dTestDate = ChaîneVersDate(sTxt) hTestHeure = sTxt dhTestDateHeure = sTxt Trace(sTxt) POUR i = 1 A 4 SELON i CAS 1 sMsg1 = "Type Chaîne" sMsg2 = DateValide(sTest) ? "D - Ok" SINON "D - Ko" sMsg3 = HeureValide(sTest) ? "H - Ok" SINON "H - Ko" CAS 2 sMsg1 = "Type Date" sMsg2 = DateValide(dTestDate) ? "D - Ok" SINON "D - Ko" sMsg3 = HeureValide(dTestDate) ? "H - Ok" SINON "H - Ko" CAS 3 sMsg1 = "Type Heure" sMsg2 = DateValide(hTestHeure) ?"D - Ok" SINON "D - Ko" sMsg3 = HeureValide(hTestHeure) ? "H - Ok" SINON "H - Ko" CAS 4 sMsg1 = "Type DateHeure" sMsg2 = DateValide(dhTestDateHeure) ? "D - Ok" SINON "D - Ko" sMsg3 = HeureValide(dhTestDateHeure) ? "H - Ok" SINON "H - Ko" FIN Trace(sMsg1 + " : " + sMsg2 + " - " + sMsg3) FIN FIN STOP
On peut tester un type Date ou un type DateHeure comme étant une heure
et passer le test : HeureValide(dTestDate), HeureValide(dhTestDateHeure)
Les contrôles de validité sur la date et sur l’heure ne respectent pas les mêmes critères :
20 correspond à AA et est rejeté
20 correspond à HH et est accepté
2014 correspond à AAAA et est rejeté
2014 correspond à HHMM et est accepté
201406 correspond à AAAAMM et est rejeté
201406 correspond à HHMMSS et est accepté
20140613 correspond à AAAAMMJJ : la Chaîne et la Date sont validés comme Date, rejetés comme Heure et DateHeure
20140613 correspond à HHMMSSMM et est rejeté comme Heure et DateHeure (millisecondes incomplètes ?)
201406136 est rejeté comme Date sauf quand il est affecté à un type Date : DateValide(dTestDate)
ChaineVersDate renvoie une chaîne vide.
20140613 correspond à HHMMSSMMM et est validé comme heure dans tous les cas.
Les dates tronquées sont refusées, tandis que les heures tronquées sont validées, tant que le segment H, M, S ou M est complet
Si une variable DateHeure peut être validée comme Heure, elle est validée, alors que le format attendu n’est pas respecté : longueur et position de la sous-chaîne compatible avec l’heure.
En sus, une fonction DateHeureValide() serait bienvenue et aurait dû accompagner l'introduction de ce type ...!
Testé en V18.
Si l'un de vous veut bien tester en V19 et faire remonter à PC soft, qu'il en soit remercié.
Hemgé






Répondre avec citation




Partager