par , 21/07/2015 à 23h09 (1474 Affichages)
Une fonction pour tester les chaînes vides...
Dans ce billet je propose une petite fonction qui permet de déterminer si une chaîne de caractère est vide.
Contexte fonctionnel
Commençons par une définition.
|
une chaine vide est une chaîne qui contient aucun caractère. |
Avec cette définition, WinDev nous permet de vérifier avec la fonction Taille renvoyant 0 et le test d'égalité avec "" renvoyant vrai.
1 2 3 4 5 6
|
ls_TestEXPRESS est une chaîne
ls_TestEXPRESS=""
Taille(ls_TestEXPRESS) //----->Retourne 0 |
Nous pourrions en rester la-dessus, mais mettons en place ce test dans un contexte utilisateur et une vérification des données saisies. Prenons par exemple le cas d'un formulaire :
- saisie d'un formulaire d'inscription ;
- saisie d'une fiche client ;
- saisie d'une fiche article.
A la validation nous vérifions la saisie des informations obligatoires (Nom, prénom, adresse, référence, ....), en mettant en place le test vu plus haut, nous récupérons la valeur des champs renseignés ... Mais si l'utilisateur saisi une suite d'espace, que renvoie notre test ?
1 2 3 4 5 6
|
ls_TestEXPRESS est une chaîne
ls_TestEXPRESS=" "
Taille(ls_TestEXPRESS) //----->Retourne 3 |
Nous observons que la définition et le test ne nous permettents pas de détecter les chaines contenant uniquement des espaces, et nous avons en base de données des valeurs inexploitables.
Nouvelle fonction
Dans un premier temps, nous allons définir ce que l'on entend par chaîne vide dans un contexte de vérification d'informations.
|
Une chaîne vide est une chaîne qui ne contient aucun caractère ou uniquement des caractères espace. |
Pour cela je propose la fonction ChaineVide qui permettra de tester uen chaine selon cette définition.
Code de la fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
// Résumé : Vérifie si une chaine contient uniquement des caractères espaces ou pas de caractère
// Syntaxe :
//ChaineVide ()
//
// Paramètres :
// ps_chaine <chaine> : chaine à tester
// Valeur de retour :
// vrai : chaine contenant 0 caractère ou uniquement des espaces
// faux : chaine contenant plusieurs caractères différents de espace
//
// Exemple :
// ChaineVide(ls_nomClient)
//
PROCEDURE ChaineVide(ps_chaine est une chaîne)
RENVOYER (SansEspace(ps_chaine)="") |
Test
Un jeu de tests pour vérifier la fonction
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
ls_TestEXPRESS1, Ls_TestEXPRESS2, ls_TestEXPRESS3, ls_TestEXPRESS4,sLs_TestEXPRESS5 est une chaîne
ls_TestEXPRESS1=""
Ls_TestEXPRESS2=" "
ls_TestEXPRESS3=" Nom"
ls_TestEXPRESS4=" Prenom"
ls_TestEXPRESS4=" Adresse "
ChaineVide(ls_TestEXPRESS1)
ChaineVide(Ls_TestEXPRESS2)
ChaineVide(ls_TestEXPRESS3)
ChaineVide(ls_TestEXPRESS4)
ChaineVide(sLs_TestEXPRESS5) |
Résultats
1 2 3 4 5 6
|
Vrai
Vrai
Faux
Faux
Faux |
Contexte technique
Version de WinDev : 20 et antérieures
Conclusion
Dans ce billet, nous avons une nouvelle définition d'une chaîne vide plus proche d'un contexte utilisateur. Celle-ci peut être appliqué pour tester les valeurs saisies d'un utilisateur, et aussi pour vérifier les paramètres d'entrée d'une fonction (fonctions internes à un programme, Web-services, API, ...). Cette fonction permet de vérifier qu'une chaîne contient des caractères mais ne permet de vérifier la validité des informations, un client avec pour nom et prénom test passera le test...
Bon dev à tous