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 :

ExtraitChaine - Parcours non initialisé ou terminé? [WD17]


Sujet :

WinDev

  1. #1
    Membre averti
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 256
    Points : 435
    Points
    435
    Par défaut ExtraitChaine - Parcours non initialisé ou terminé?
    Bonjour à tous,

    Petite bizarrerie de WD17:
    A l'exécution du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       		ch=ExtraitChaîne(Main.Table_Sel_BLVte.libelle[i],rangPremier,RC)
       		TANTQUE ch<>EOT
    //   			pour p=1 a val(extraitchaine(ch,1,tab))
       			POUR p=1 _A_ Val(Gauche(ch,Position(ch,TAB)-1))
       			    j++
    //				tableajouteligne(Table_Poids,"Colis N° "+NumériqueVersChaine(j,"02d"),val(extraitchaine(ch,1,tab,DepuisFin)))
    				TableAjouteLigne(Table_Poids,"Colis N° "+NumériqueVersChaîne(j,"02d"),Val(Droite(ch,3)))
       			FIN
       			ch=ExtraitChaîne(Main.Table_Sel_BLVte.libelle[i],rangSuivant,RC) // <--- Erreur !
       		FIN
    A l'avant dernière ligne j'obtiens le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur à la ligne 24 du traitement Déclarations globales de Exped2.
    Vous avez appelé la fonction ExtraitChaîne.
    Utilisation de l'option de parcours rangSuivant alors que le parcours n'a pas été initialisé par rangPremier ou qu'il est terminé.
    J'ai mis en commentaire les autres utilisations de ExtraitChaine qui se trouvaient entre les 2 ExtraitChaine du parcours, mais l'erreur subsiste.
    Ce code marchait très bien depuis 2006, mais plus depuis le passage du projet en WD17 (78n)
    Dans le debug, l'extraction de la 1ère chaine avant le RC se fait bien.
    Le 2ème ExtraitChaine avec rangSuivant plante, qu'il y ait 1, 2 ou 3 éléments séparés par RC...

    Y aurait-il quelque-chose que je ne vois pas?

    EDIT: Est-ce que, par hasard, ce parcours ne fonctionnerait plus avec RC comme séparateur, c-à-d qu'il voit le 1er RC comme la fin de la chaine initiale au lieu d'un séparateur?
    Merci de votre aide

  2. #2
    Membre averti
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 256
    Points : 435
    Points
    435
    Par défaut
    Bon ben... c'est bien ça: en WD17, on ne peut plus faire de parcours de chaine par ExtraitChaine si le séparateur est RC !
    (belle exemple de régression ?)

    Pour ceux que ça intéresse, voici le nouveau code:
    J'ai remplacé les RC de la chaine initiale par "£"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       		chInit=Remplace(Main.Table_Sel_BLVte.libelle[i],RC,"£")
     
       		ch=ExtraitChaîne(chInit,rangPremier,"£")
       		TANTQUE ch<>EOT
       			POUR p=1 A Val(ExtraitChaîne(ch,1,TAB))
       			    j++
    				TableAjouteLigne(Table_Poids,"Colis N° "+NumériqueVersChaîne(j,"02d"),Val(ExtraitChaîne(ch,1,TAB,DepuisFin)))
       			FIN
       			ch=ExtraitChaîne(chInit,rangSuivant,"£")
       		FIN

  3. #3
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Salut

    De même qu'avec les séparateurs optionnels, il faut veiller que la première occurrence ne soit pas une chaine vide.
    il me semble me rappeler avoir rencontrés des problèmes sur ce cas.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bPremier = vrai
    TANTQUE ch<>EOT _ET_ (bPremier _et_ ch<>"")
       bPremier = faux
    ...
    Sinon il y a la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POUR TOUTE CHAINE x=ch DE chInit SEPAREE PAR RC

  4. #4
    Membre averti
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 256
    Points : 435
    Points
    435
    Par défaut
    Merci de ces précisions.

    C'était un code de 2006 ! Maintenant j'utilise aussi POUR TOUTE CHAINE... qui est bien plus pratique !

    Bon dev

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

Discussions similaires

  1. Démarer : applet non initialisé
    Par dagame dans le forum Applets
    Réponses: 7
    Dernier message: 11/04/2007, 00h16
  2. Applet non initialisé
    Par alexandrebergercyr dans le forum Applets
    Réponses: 2
    Dernier message: 27/03/2007, 18h58
  3. [debutant] Pointeur non-initialisé ?
    Par Pit29 dans le forum C
    Réponses: 8
    Dernier message: 04/01/2007, 17h55
  4. [PL/SQL] réference a un ensemble non initialisé
    Par CROSS dans le forum Oracle
    Réponses: 5
    Dernier message: 15/12/2006, 15h50
  5. Directx non initialisé
    Par Cyclops dans le forum DirectX
    Réponses: 3
    Dernier message: 07/06/2005, 11h14

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