IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Nom Générique et correspondance [WD14]


Sujet :

WinDev

  1. #1
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut Nom Générique et correspondance
    Bonjour,

    Je sais que le titre n'est pas très clair mais voilà.

    J'utilise la fonction FTPListeFichier mais il en est de même pour fListeFichier.

    Dans cette fonction j'utilise un nom de fichier générique comme
    "Demande??.txt", "Demande????.txt" ou même "Demande*.txt"

    J'utilise aussi une procédure qui me permet de traiter chaque fichier lister par la procédure Windev.

    Je voulais savoir s'il étais possible de connaitre seulement les caractères qui ont remplacer ?? ou *

    ex:

    Ma recherche concerne "Demande??.txt"
    j'obtient "Demande01.txt" / "Demande02.txt" / "Demande03.txt"
    et je voudrais obtenir 01 / 02 / 03

    Je sais qu'on peut le faire avec des fonction gauche droite et position mais je me demandais s'il y avais un moyen plus simple.

    Car sinon je dois trouver si il y a * ou ? puis combien de ? pour ensuite trouver avec [[]] ou gauche ou droite ou milieu ce qui est à la place.


    Merci d'avance pour vos suggestions

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    A part les fonctions de manipulation de chaînes je ne vois pas d'autres solutions

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Tu pourrais utiliser la fonction VérifieExpressionRégulière() qui semble convenir à ton besoin.
    Cf. FAQ ou doc WLangage.

    Dans l'esprit de ta question, voici un exemple dans lequel on veut reconnaître un texte qui contient exactement 2 caractères numériques et extraire ces 2 caractères.
    Les caractères extraits sont placés dans la variable sExtrait:

    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sTexte est une chaîne = "Demande35.txt"
    sFormat est une chaîne ="Demande([0-9]{2}).txt"
    sExtrait est une chaîne
     
    SI VérifieExpressionRégulière(sTexte, sFormat, sExtrait) ALORS
    	Info("OK", sExtrait)
    SINON
    	Info("NOK")
    FIN

    Format pour prendre en compte un texte contenant au moins 1 caractère numérique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sFormat est une chaîne ="Demande([0-9]+).txt"
    Format pour prendre en compte un texte contenant entre 2 et 4 caractère numériques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sFormat est une chaîne ="Demande([0-9]{2,4}).txt"

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Je reviens un peu vers vous avec une autre question sur les expression régulière.
    J'avoue que je n'ai pas pris le temps de me pencher dans les expressions régulières et c'est pour cela que je demande votre aide.
    Je sais que le forum n'a pas vocation à donner du code tout fait mais là j'ai besoin d'un exemple afin de comprendre un peu plus les expressions régulière.

    Donc voilà j'ai des fichiers pdf comme ça :
    "[FNC1]2012-185004 [01][02][03][04].pdf"
    "[FNC1]2012-185004 [05][06][07].pdf"
    "[FNC1]2012-185004 [08].pdf"
    Le nom du fichier se décompose comme suit :
    '[FNC1]' : toujours présent et fixe
    '2012' : année sur 4 caractères
    '-' : toujours présent
    '185004' : numéro sur 5 ou 6 caractères
    ' [xx]' : pouvant être répété de 1 à 4 fois
    '.pdf' : toujours présent.

    Je cherche une façon de récupérer la liste des [xx] qui compose le nom du fichier.

    Je sais que je peux faire cela avec les fonctions de chaine de caractères mais je pense que les expressions régulières sont faite pour ça?

    j'ai utilisé le générateur d'expression pour avoir la séquence suivante mais ça ne résout pas mon problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	VérifieExpressionRégulière("[FNC1]2012-185004 [05].pdf", "\[FNC1\][0-9]{4,4}-[0-9]{5,6} \[[0-9]{2,2}\]\.pdf")
    Je voudrais obtenir la liste des '[xx]' afin de les mettres dans une variables tableaux.

    Je vous remercie d'avance pour les pistes et les exemples que vous pourriez me fournir.

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 009
    Points : 9 410
    Points
    9 410
    Par défaut
    bonjour mailspam,

    j'ai trouvé une formule qui semble convenir à ce que tu désires extraire. Tu n'étais pas loin de la vérité. Comme je ne suis pas un pro des regexp les puristes font surement déceler des simplifications possibles. Voici le code pour extraire les chaînes recherchées dans un tableau de chaîne :
    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
     
    tabChaineResultat est un tableau de chaînes
    resultatRegexp est une chaîne
    tabChainesAtester est un tableau de chaîne = ["[FNC1]2012-185004 [05].pdf","[FNC1]2012-185004 [05][06][07].pdf",...
                                                 "[FNC1]2012-185004 [01][02][03][04].pdf"]
     
    POUR TOUTE sChaineAtester DE tabChainesAtester
    TableauSupprimeTout(tabChaineResultat)
     resultatRegexp= ""
    SI	VérifieExpressionRégulière(sChaineAtester,...
    	 "\[FNC1\][0-9]{4,4}-[0-9]{5,6} (\[[0-9]{2,2}\])?(\[[0-9]{2,2}\])?(\[[0-9]{2,2}\])?(\[[0-9]{2,2}\])?\.pdf",...
    	  tabChaineResultat) ALORS
    POUR x=1 _A_ tabChaineResultat..Occurrence
    resultatRegexp = resultatRegexp + "  " + tabChaineResultat[x]
    FIN
    Trace(sChaineAtester + " ->    :  " + resultatRegexp)
    SINON
    Trace(sChaineAtester + " -> pas de correspondance")	
    FIN
    FIN
    une petite explication quand même :
    les "motifs" des chaînes à extraire sont entourées de ( ) le ? derrière veut dire que le motif peut être présent ou non. Il y a surement plus simple mais je ne sais pas capturer en une seule fois un motif qui se répète

    Ami calmant, J.P

  6. #6
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,
    Merci pour le code.
    Malheureusement l'utilisation d'un tableau de chaine comme paramètre de la fonction VérifieExpressionRégulière n'est pas disponible en Windev 14.
    Par contre le format de l'expression régulière est bonne.
    Je n'ai plus qu'à bidouiller un peu pour avoir ce que je cherche.

    Merci encore.

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 009
    Points : 9 410
    Points
    9 410
    Par défaut
    en effet je viens de m'apercevoir que l'utilisation de tableau de chaînes dans vérifieexpressionrégulière était une nouveauté WD16

  8. #8
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Je suis donc passer par ça :

    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
    SELON ChaîneOccurrence(sChaineAtester,"][")
    	CAS 0
    		SI PAS VérifieExpressionRégulière(sChaineAtester, gsFormatExpReg,tabChaineResultat[1]) ALORS
     
    		FIN
    	CAS 1
    		SI PAS VérifieExpressionRégulière(sChaineAtester, gsFormatExpReg,tabChaineResultat[1],tabChaineResultat[2]) ALORS
     
    		FIN
     
    	CAS 2
    		SI PAS VérifieExpressionRégulière(sChaineAtester, gsFormatExpReg,tabChaineResultat[1],tabChaineResultat[2],tabChaineResultat[3]) ALORS
     
    		FIN
     
    	CAS 3
    		SI PAS VérifieExpressionRégulière(sChaineAtester, gsFormatExpReg,tabChaineResultat[1],tabChaineResultat[2],tabChaineResultat[3],tabChaineResultat[4]) ALORS
     
    	FIN
    FIN

  9. #9
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu peux modifier le code de VérifieExpressionRégulière pour utiliser ce format
    Citation Envoyé par Aide WinDev
    <Résultat> = VérifieExpressionRégulière(<Expression à vérifier> , <Format> , <Variable 1> [, ... [, <Variable N>]])
    si c'est dispo en WD14.... ou sinon ne retrouvé que le motif au complet.
    Il suffit d'enlever les motifs du code de jurassic pork et d'en laisser un seul qui englobe le tout


    Edit : sinon, ton code a l'air bon !
    Attention tout de même à ta regex car si elle ne match pas pour une raison X a ton format [XX][XX][XX], et que tu utilises un des motifs non matché, ca plantera surement.

  10. #10
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour Tober,
    J'ai pas tout compris l'histoire du motif.
    Mais si j'ai suivi ce que tu me propose me permet d'avoir
    [01][02][03][04] pour le fichier [FNC1]2012-185004 [01][02][03][04].pdf
    C'est bien ça?

    Car avec la solution de jurassic pork, en peu retravailler, j'arrive aussi à extraire l'année, le numéro '185004' ce qui me va parfaitement.

    Peux tu me dire un peu plus sur ton idée de motif?
    Merci d'avance.

    Pour le point

    Citation Envoyé par Tober Voir le message
    Attention tout de même à ta regex car si elle ne match pas pour une raison X a ton format [XX][XX][XX], et que tu utilises un des motifs non matché, ca plantera surement.
    Mon
    Citation Envoyé par Tober Voir le message
    Attention tout de même à ta regex car si elle ne match pas pour une raison X a ton format [XX][XX][XX], et que tu utilises un des motifs non matché, ca plantera surement.
    Le nom de mon fichier aura toujours ce format car son nom est généré à partir d'un code barre que je génère moi même.
    En gros j'imprime un document avec un code barre puis je le scan en pdf, ensuite un logiciel de reconnaissance de codebarre renomme le scan avec les infos du codebarre.

    Mais j'ai quand même rajouter une gestion d'exception dans mon programme.

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 009
    Points : 9 410
    Points
    9 410
    Par défaut
    je te propose une autre méthode en utilisant l'objet COM Vbscript.Regexp et en procédant en 2 étapes :
    1 - on extrait la partie avec les motifs \[[0-9]{2,2}\]
    2 - on cherche tous les motifs
    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
     
    objMatches,objSubMatches  sont des objets OLE dynamique
    chaîneExtraite est une chaîne
    MonRegexp est un objet OLE "vbscript.regexp"
    tabChainesAtester est un tableau de chaîne = ["[FNC1]2012-185004 [05].pdf","[FNC1]2012-185004 [05][06][07].pdf",...
                                                 "[FNC1]2012-185004 [01][02][03][04].pdf"]
    POUR TOUTE sChaineAtester DE tabChainesAtester
     
    MonRegexp>>IgnoreCase = Vrai
    MonRegexp>>Global =   Faux // on ne cherche qu'une occurrence
    MonRegexp>>Pattern = "\[FNC1\][0-9]{4,4}-[0-9]{5,6} (.*)\.pdf" // on extrait la partie avec les motifs \[[0-9]{2,2}\]
    objMatches = MonRegexp>>Execute(sChaineAtester)
    SI objMatches>>Count <> 1 ALORS
    Info("pas de correspondance")	
    SINON
    chaîneExtraite = objMatches>>Item(0)>>SubMatches>>Item(0)
    Trace(sChaineAtester + " --> chaîne extraite : " + chaîneExtraite)
    FIN
    MonRegexp>>Global =   Vrai // on cherche toutes les occurrences
    MonRegexp>>Pattern = "\[[0-9]{2,2}\]"
    objMatches = MonRegexp>>Execute(chaîneExtraite) // on recherche tous les motifs
    SI objMatches>>Count = 0 ALORS
    	Info("pas de pattern trouvé")	
    SINON
    	POUR y=0 _A_ objMatches>>Count - 1
    		Trace(" élément N° " + y + " : " +  objMatches>>Item(y)>>value)
    	FIN
    FIN
    FIN
    Ami calmant, J.P ;-)

  12. #12
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Je te remercie jurassic pork mais ta première solution me convient pour ce que je veux faire.
    C'est l'histoire des masques des expressions régulières que j'ai du mal à comprendre.

  13. #13
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Pardon, je me suis un peu mal expliqué...
    Mais le fait que tu génères toi même le nom des fichiers fait que ma remarque tombe à l'eau si on peut dire.
    Ce que voulais dire est que si ta chaine tombe dans le cas 2 et que donc tu recherches 3 fois le motifs [XX], il est possible que tu aies des motifs vide (par exemple([][][]) et donc tes variables de destinations (tabChaineResultat[X]) ne matcherait pas et tu aurais une exception WinDev.
    Enfin bref, pour simplifier, quand on gère les expressions régulières, faut faire gaffe à ces débordements...
    J'ai eu du mal à m'exprimer !

    Par contre jurassic pork, j'ai pas compris l'utilité de ton objet COM, de ce que je lis, tu peux faire exactement la même chose en WinDev avec VérifieExpressionRégulière, non ?

  14. #14
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 009
    Points : 9 410
    Points
    9 410
    Par défaut
    héhé non pas tout à fait à moins que je n'ai pas tout compris à la fonction VérifierExpressionRégulière :
    Comment fait-on pour extraire plusieurs occurrences avec cette fonction. Par exemple tu as "1234 titi 5678 tata toto" .Comment fais-tu pour extraire les blocs de 4 chiffres avec une expression générique (c'est à dire si on ne connait pas le contenu de la chaîne qui peut avoir plus que 2 blocs de 4 chiffres).

    dans VérifierExpressionRégulière on extrait que des parties avec les () .

    avec vbscript.regexp on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MonRegexp>>Global =   Vrai // on cherche toutes les occurrences
    MonRegexp>>Pattern = "[0-9]{4,4}"
    objMatches = MonRegexp>>Execute("1234 titi 5678 tata toto") // on recherche tous les motifs
    SI objMatches>>Count = 0 ALORS
    	Info("pas de pattern trouvé")	
    SINON
    	POUR y=0 _A_ objMatches>>Count - 1
    		Trace(" élément N° " + y + " : " +  objMatches>>Item(y)>>value)
    	FIN
    FIN
    Ami calmant, J.P ;-)

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Bonjour,

    @Jurassik Pork

    On peut faire la même chose avec VérifieExpressionRégulière.
    Il suffit de mettre comme expression "(.*)([0-9]{4,4})(.*)", puis de boucler


    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
    sRetour = ExtraitRegExp(sTexte,sBloc1)
    TANTQUE sRetour <> ""
    	Trace(sRetour)
    	sRetour = ExtraitRegExp(sBloc1,sBloc1)
    FIN
    
    PROCEDURE ExtraitRegExp(LOCAL sTexte,p_Bloc1)
    
    sExpression est une chaîne = "(.*)([0-9]{4,4})(.*)"
    sBloc2, sBloc3 est une chaîne
    
    SI VérifieExpressionRégulière(sTexte,sExpression,p_Bloc1,sBloc2,sBloc3) ALORS
    	RENVOYER sBloc2
    SINON
    	RENVOYER ""
    FIN
    Cordialement

    Madsl@nD

  16. #16
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Tout est possible avec WinDev en se tordant un peu l'esprit !
    Mais en effet jurassic pork, les expressions régulières dans WinDev sont plus que limités.

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Je pourrais proposer une alternative...qui va demander beaucoup de code...mais qui peut marcher. Il s'agit de coder sois-même un peu de ce que fait windev avec ses expressions régulières.

    J'ai codé des masques de saisies dernièrement (Téléphone, code postal, le code postal anglais qui peut prendre plusieurs formes, numero de sécurité sociale avec contrôle de validité de chaque chiffre saisi et avec formatage séparatif par des espaces ou des points.

    Mes contrôles de saisie et de validité sont testés et marchent bien.

    Un petit exemple de contrôle de saisie (le plus simple):
    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
    sMasque est une chaîne = "99999"
    sValeur_Saisie est une chaîne = Remplace(_Valeur_Saisie, " ","")
    sRetour est une chaîne = ""
    i est un entier
    nPositionSaisie est un entier = 1
    sValeursPossibles est une chaîne = "0123456789"
    POUR i=1 _A_ Taille(sMasque)
    	SELON sMasque[[ i ]]
    		CAS "9":
    			SI nPositionSaisie<=Taille(sValeur_Saisie) ALORS
    				SI Position(sValeursPossibles, sValeur_Saisie[[ nPositionSaisie ]] ) > 0 ALORS
    					sRetour += sValeur_Saisie[[ nPositionSaisie ]]
    				FIN
    			SINON
    				SORTIR						
    			FIN	
    			nPositionSaisie++
    		CAS " ":
    			sRetour += " "
    			SI nPositionSaisie>Taille(sValeur_Saisie) ALORS
    				SORTIR
    			FIN
    		AUTRE CAS			
    	FIN
    FIN
    sRetour = SansEspace(sRetour)
    RENVOYER sRetour
    mais ce code ne va pas convenir correctement à des contrôles de validité, mais dans ce cas aussi, j'ai du code.
    En tout cas cela donne une idée de ce qu'il est possible de faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2017, 09h53
  2. Tester l'existence d'un ou plusieurs fichiers (nom générique)
    Par jibe74 dans le forum Shell et commandes GNU
    Réponses: 21
    Dernier message: 28/10/2015, 14h21
  3. Réponses: 1
    Dernier message: 09/04/2011, 20h22
  4. Emplois de nom génériques pour les variables
    Par Balbuzard dans le forum Général Python
    Réponses: 2
    Dernier message: 11/03/2011, 23h04
  5. Récupérer données de fichiers au nom générique
    Par bestkiki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2008, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo