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 :

[WD28] - Parcours d'un tableau qui change de taille


Sujet :

WinDev

  1. #1
    Membre éprouvé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 227
    Points : 1 095
    Points
    1 095
    Par défaut [WD28] - Parcours d'un tableau qui change de taille
    Bonjour à tous,

    On utilise une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtabMonTableau									est un tableau de 2 par 40 chaînes
    Et je dois parcourir un tableau auxquels il m'arrive de supprimer des lignes donc l'instruction de la boucle est variable.

    Voici la boucle en image :
    Nom : warning.png
Affichages : 103
Taille : 15,6 Ko

    En code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    POUR i = 1 À TableauInfo(gtabMonTableau, tiNombreLignes)
     
    	SI gtabMonTableau[i, gnColonne_etat_pds] = "en service" ALORS
    		SI  gtabMonTableau[i, gnColonne_numero_de_branchement] <> gsBranchement_temoin ALORS
    			gsBranchement_temoin = gtabMonTableau[i, gnColonne_numero_de_branchement]
    		SINON
    			gtabMonTableau[i, gnColonne_numero_de_branchement] = ""
    		FIN
    	SINON
    		TableauSupprimeLigne(gtabMonTableau, i)
    	FIN
    FIN
    Ce qui est donc variable à chaque tour de boucle c'est l'élément suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableauInfo(gtabMonTableau, tiNombreLignes)
    Ce que je ne comprends pas c'est qu'il est surligné dans l'IDE Windev28. Je ne souhaite pas utiliser le _A_ car je veux recalculer à chaque fois le nombres de lignes du tableau puisqu'à l'intérieur de la boucle il m'arrive de supprimer des lignes du tableau.

    Auriez-vous une solution pour ne plus avoir ce WARNING et faire du code "propre" ?

    Le code fonctionne mais je suis sûr qu'il doit y avoir une méthode pour éviter ce warning.

    Merci par avance à ceux qui pourront m'apporter une réponse.

    En vous souhaitant bonne lecture et une bonne fin de journée

  2. #2
    Membre éprouvé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 227
    Points : 1 095
    Points
    1 095
    Par défaut
    Bonjour,

    J'ai bien évidemment finis par trouvé.. Quand on pose la question on trouve des fois..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    i est un entier = 1
    TANTQUE i <> TableauInfo(gtabMonTableau, tiNombreLignes)
     
    	SI gtabMonTableau[i, gnColonne_etat_pds] = "en service" ALORS
    		SI  gtabMonTableau[i, gnColonne_numero_de_branchement] <> gsBranchement_temoin ALORS
    			gsBranchement_temoin = gtabMonTableau[i, gnColonne_numero_de_branchement]
    		SINON
    			gtabMonTableau[i, gnColonne_numero_de_branchement] = ""
    		FIN
    	SINON
    		TableauSupprimeLigne(gtabMonTableau, i)
    	FIN
    	i = i + 1
    FIN
    Par contre si vous savez pourquoi j'avais un warning et là plus du tout je suis preneur de l'info.
    En tout cas ça marche avec un TANTQUE sans warning.

    Bonne fin de journée,

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Quand j'ai ce genre de truc à faire, je fais un parcours "à l'envers" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 1 _À_ gtabMonTableau..occurrence PAS -1
    // Tes tests divers et variés qui engendrent la suppression...
    FIN
    Notes :
    - Utilise le _A_ qui t'évite un avertissement du compilateur
    - Utilise ..occurrence qui te permet de savoir "directement" le nombre d'éléments du tableau (en survolant l'expression en mode débug)
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 397
    Points
    9 397
    Par défaut
    Comme Frenchsting, pour les parcours de tableau avec éventuellement des suppressions de lignes, le mieux est de parcourir le tableau en remontant.

    Avec ton code, fais un test avec les 2 premières lignes 'A supprimer'. Tu vas constater que ton traitement ne supprime que la première. Au moment où i vaut 2, il teste la ligne n°2, mais la ligne qui est en n°2 à ce moment là, c'est la ligne qui était en n°3 au début.

    Donc soit un parcours en remontant.
    Soit un truc comme ç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
    i est un entier = 1
    TANTQUE i <> TableauInfo(gtabMonTableau, tiNombreLignes)
     
    	SI gtabMonTableau[i, gnColonne_etat_pds] = "en service" ALORS
    		SI  gtabMonTableau[i, gnColonne_numero_de_branchement] <> gsBranchement_temoin ALORS
    			gsBranchement_temoin = gtabMonTableau[i, gnColonne_numero_de_branchement]
    		SINON
    			gtabMonTableau[i, gnColonne_numero_de_branchement] = ""
    		FIN
    	        i = i + 1   // On incrémente i uniquement si on ne supprime pas la ligne.
            SINON
    		TableauSupprimeLigne(gtabMonTableau, i)
    	FIN
    FIN
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre éprouvé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 227
    Points : 1 095
    Points
    1 095
    Par défaut
    Bonjour,

    Merci pour vos précieuses réponses qui m'on permis de mieux comprendre le code.

    Encore un peu de mal à comprendre l'expression "PAS -1" mais sinon c'est super.

    Pour moi le sujet est résolu.

    Bonne journée à tous,

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par Aooka Voir le message
    Encore un peu de mal à comprendre l'expression "PAS -1"
    Bonjour,

    Il ne s'agit pas du tout de la négation mais de "l'unité de mesure", comme lorsque l'on marche, ou la distance du filet d'une vis.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

Discussions similaires

  1. bouton qui change la taille d'un div..
    Par bilcosby dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2009, 14h07
  2. Réponses: 2
    Dernier message: 26/02/2009, 10h52
  3. [HttpUnit] upload file - le fichier qui change de taille
    Par Yannos94 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/09/2007, 14h29
  4. Liens dans un tableau qui change le contenu d'un autre case da ce tableu
    Par maxtofurious dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/06/2007, 17h09
  5. Réponses: 3
    Dernier message: 22/07/2002, 14h19

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