DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Instructions structurées
  • Syntaxe 1 : Parcours des sous-chaînes séparées par un séparateur
  • Syntaxe 2 et 3 : Parcours des occurrences d'une chaîne dans une autre
  • POUR TOUTE CHAÃŽNE, POUR TOUTE POSITION et UNICODE
  • Astuce : Comment récupérer le séparateur ?
  • Astuce : Parcours d'une chaîne XML
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
L'instruction POUR TOUT permet d'effectuer différents types de parcours de chaînes :
  • Parcours des sous-chaînes séparées par un séparateur.
  • Parcours des occurrences d'une chaîne dans une autre.
Remarque : Les instructions POUR TOUT, POUR TOUS, POUR CHAQUE sont acceptées. Dans cette documentation, seule l'instruction POUR TOUT est utilisée et peut être remplacée par POUR TOUS ou POUR CHAQUE.
L'instruction POUR TOUT peut également être utilisée pour parcourir les objets DotNet qui implémentent l'interface IEnumerable.
Exemple
// Récupère la liste des librairies chargées en mémoire
ListeLibrairie est une chaîne = ListeDLL()
 
// Pour chaque librairie
POUR TOUTE CHAÎNE UneLibrairie DE ListeLibrairie SÉPARÉE PAR RC
// Ajoute la librairie dans la table TABLE_Librairie
TableAjouteLigne(TABLE_Librairie, ExtraitChaîne(UneLibrairie, 1, TAB))
FIN
// Le fichier "C:\MesDocuments\Exports.TXT" contient la liste
// des produits exportés séparés par des ";"
// Récupération de chaque produit
ProduitExport est une chaîne = fChargeTexte("C:\MesDocuments\Exports.TXT")
AnciennePosition est un entier
 
// Pour chaque produit
POUR TOUTE POSITION PositionActuelle DE ";" DANS ProduitExport
// Ajoute le produit dans la liste ListeProduit
ListeAjoute(LISTE_Produit, ...
ProduitExport[[AnciennePosition + 1 À PositionActuelle - 1]]
// Mémorisation de la position
AnciennePosition = PositionActuelle
FIN
POUR TOUTE CHAÎNE sc1, nPosition, nCompteur DE "A.B.C" SÉPARÉE PAR "."
Trace(sc1 + " - " + nPosition + " - " + nCompteur)
FIN
// Renvoie
// A - 1 - 1
// B - 3 - 2
// C - 5 - 3
s est une chaîne = "je suis une phrase"+RC+"sur plusieurs lignes"
POUR TOUTE CHAÎNE s2 DE s SÉPARÉE PAR [" ",RC]
Trace(s2)
FIN
 
// Renvoie
// je
// suis
// une
// phrase
// sur
// plusieurs
// lignes
Syntaxe

Parcours des sous-chaînes séparées par un séparateur Masquer les détails

POUR TOUTE CHAÃŽNE <Sous-chaîne> [, <Position> [, <Compteur>]]  DE <Chaîne initiale>
                                                                   [SEPAREEE PAR <Séparateur>] [<Sens>]

    ...
FIN
<POUR TOUTE CHAÃŽNE> :
Signale le début du bloc d'instructions.
<Sous-Chaîne> :
Variable de type chaîne contenant le texte de la sous-chaîne. Il n'est pas nécessaire de déclarer cette variable.
<Position> :
Variable de type entier contenant la position de la sous-chaîne dans la chaîne. Il n'est pas nécessaire de déclarer cette variable.
<Compteur> :
Variable de type entier contenant le nombre d'itérations. Il n'est pas nécessaire de déclarer cette variable.
<Chaîne initiale> :
Chaîne contenant le texte complet. Si cette chaîne est vide, le parcours des sous-chaînes n'est pas effectué.
<Séparateur> :
Chaîne optionnelle contenant le séparateur des sous-chaînes (TAB par défaut).
Pour spécifier plusieurs séparateurs, il suffit d'utiliser la syntaxe :
[<Séparateur1> , ..., <Séparateur N>]
Par exemple : [TAB, RC]
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours la chaîne du premier caractère au dernier.
DepuisFinParcours la chaîne du dernier caractère au premier.

Parcours des occurrences d'une chaîne dans une autre chaîne Masquer les détails

POUR TOUTE POSITION <Position> DE <Recherche> DANS <Chaîne initiale> [<Sens>]

    ...
FIN
<POUR TOUTE POSITION> :
Signale le début du bloc d'instructions.
<Position> :
Variable de type Entier contenant la position en cours. Il n'est pas nécessaire de déclarer cette variable.
<Recherche> :
Chaîne recherchée.
<Chaîne initiale> :
Chaîne contenant le texte complet.
<Sens> :
Indicateur optionnel du sens de parcours :
DepuisDébut
(valeur par défaut)
Parcours la chaîne du premier caractère au dernier.
DepuisFinParcours la chaîne du dernier caractère au premier.

Parcours des occurrences d'une chaîne dans une autre chaîne Masquer les détails

POUR TOUTE POSITION <Position> DE <Recherche> DANS <Chaîne initiale> AVEC <Options>

    ...
FIN
<POUR TOUTE POSITION> :
Signale le début du bloc d'instructions.
<Position> :
Variable de type Entier contenant la position en cours. Il n'est pas nécessaire de déclarer cette variable.
<Recherche> :
Chaîne recherchée.
<Chaîne initiale> :
Chaîne contenant le texte complet.
<Options> :
Indicateur des options sélectionnées (combinables) :
DepuisDébut
(valeur par défaut)
Parcours la chaîne du premier caractère au dernier.
DepuisFinParcours la chaîne du dernier caractère au premier.
MotCompletRecherche sur le mot complet
SansCasseRecherche sans tenir compte de la casse (Majuscules / minuscules)
Remarques

Syntaxe 1 : Parcours des sous-chaînes séparées par un séparateur

Parcourt toutes les sous-chaînes de la chaîne <Chaîne initiale> séparées par le séparateur <Séparateur>. Si <Chaîne initiale> correspond à une chaîne vide, le parcours n'est pas effectué.
A chaque itération :
  • la variable <Sous-chaîne> est renseignée avec la sous-chaîne en cours.
  • la variable <Position> contient la position de la sous-chaîne dans la chaîne.
  • la variable <Compteur> contient le nombre d'itérations effectuées.
Le comportement est indéterminé si la chaîne initiale ou le séparateur est modifié lors du parcours.
Remarque : Si <Chaîne initiale> se termine par le séparateur, <Sous-Chaîne> renvoie une chaîne vide à la fin. Dans le cas contraire, <Sous-Chaîne> correspond au dernier élément extrait.

Syntaxe 2 et 3 : Parcours des occurrences d'une chaîne dans une autre

Parcourt toutes les positions de la sous-chaîne <Recherche> dans la chaîne <Chaîne initiale>.
A chaque itération, la variable <Position> est renseignée avec la position de la sous-chaîne en cours.
Le comportement est indéterminé si la chaîne initiale ou la chaîne recherchée est modifiée lors du parcours.

POUR TOUTE CHAÃŽNE, POUR TOUTE POSITION et UNICODE

Les paramètres <Sous-chaîne>, <Chaîne initiale>, <Séparateur> et <Recherche> peuvent tous correspondre :
  • soit à des chaînes ANSI.
  • soit à des chaînes UNICODE.
Cependant, il n'est pas possible d'utiliser des chaînes ANSI et des chaînes UNICODE dans la même syntaxe.
Pour plus de détails, consultez Gestion de l'UNICODE.

Astuce : Comment récupérer le séparateur ?

Pour récupérer le séparateur dans la boucle, il suffit d'utiliser la syntaxe suivante qui permet de connaître la position du séparateur. Pour connaître le séparateur, il suffit de récupérer le caractère suivant.
Par exemple :
POUR TOUTE CHAÎNE sChaineTemp, nPosition DE sChaineIN SÉPARÉE PAR [" ","-"]
sSeparateur = sChaineIN[[nPosition + Taille(sChaineTemp)]]
...
FIN

Astuce : Parcours d'une chaîne XML

Pour parcourir un fichier XML, avant d'utiliser la syntaxe "POUR TOUT", exécutez la fonction XMLExécuteXPath.
Version minimum requise
  • Version 10
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale