PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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.
Versions 15 et supérieures
L'instruction POUR TOUT peut également être utilisée pour parcourir les objets DotNet qui implémentent l'interface IEnumerable.
Nouveauté 15
L'instruction POUR TOUT peut également être utilisée pour parcourir les objets DotNet qui implémentent l'interface IEnumerable.
L'instruction POUR TOUT peut également être utilisée pour parcourir les objets DotNet qui implémentent l'interface IEnumerable.
Versions 17 et supérieures
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Nouveauté 17
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
WINDEV MobileiPhone/iPad Cette fonctionnalité est disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
Nouveauté 18
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Windows Store apps.
WEBDEV - Code Navigateur Cette fonctionnalité est disponible en code navigateur.
WINDEV MobileWidget Android Cette fonctionnalité est disponible en mode Widget Android.
Versions 21 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
Nouveauté 21
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonctionnalité est disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Cette fonctionnalité est disponible en mode Apple Watch.
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 SEPAREE 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 A PositionActuelle - 1]]
// Mémorisation de la position
AnciennePosition = PositionActuelle
FIN
POUR TOUTE CHAÎNE sc1, nPosition, nCompteur DE "A.B.C" SEPAREE PAR "."
        Trace(sc1 + " - " + nPosition + " - " + nCompteur)
FIN
// Renvoie
// A - 1 - 1
// B - 3 - 2
// C - 5 - 3
Versions 19 et supérieures
s est une chaîne = "je suis une phrase"+RC+"sur plusieurs lignes"
POUR TOUTE CHAÎNE s2 DE s SEPAREE PAR [" ",RC]
Trace(s2)
FIN

// Renvoie
// je
// suis
// une
// phrase
// sur
// plusieurs
// lignes
Nouveauté 19
s est une chaîne = "je suis une phrase"+RC+"sur plusieurs lignes"
POUR TOUTE CHAÎNE s2 DE s SEPAREE PAR [" ",RC]
Trace(s2)
FIN

// Renvoie
// je
// suis
// une
// phrase
// sur
// plusieurs
// lignes
s est une chaîne = "je suis une phrase"+RC+"sur plusieurs lignes"
POUR TOUTE CHAÎNE s2 DE s SEPAREE 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).
Versions 19 et supérieures
Pour spécifier plusieurs séparateurs, il suffit d'utiliser la syntaxe :
[<Séparateur1> , ..., <Séparateur N>]
Par exemple : [TAB, RC]
Nouveauté 19
Pour spécifier plusieurs séparateurs, il suffit d'utiliser la syntaxe :
[<Séparateur1> , ..., <Séparateur N>]
Par exemple : [TAB, RC]
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 SEPAREE 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