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 :

Remplissage de tableau indexé [WD17]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut Remplissage de tableau indexé
    Bonjour à tous et a toutes,

    Je cherche à remplir un tableau avec des mots que j'extraie d'un fichier en entrée séparé par des &. J'ai trouvé comment le remplir, mais maintenant je cherche à optimiser mon code.

    En gros voilà mon code pour le moment:
    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
     
    test=ExtraitChaîne(Valeurfichier,1,"&")
    Table1.Colonne1..Titre=test
    test=ExtraitChaîne(Valeurfichier,2,"&")
    Table1.Colonne2..Titre=test
    test=ExtraitChaîne(Valeurfichier,3,"&")
    Table1.Colonne3..Titre=test
    test=ExtraitChaîne(Valeurfichier,4,"&")
    Table1.Colonne4..Titre=test
    test=ExtraitChaîne(Valeurfichier,5,"&")
    Table1.Colonne5..Titre=test
    test=ExtraitChaîne(Valeurfichier,6,"&")
    Table1.Colonne6..Titre=test
    test=ExtraitChaîne(Valeurfichier,7,"&")
    Table1.Colonne7..Titre=test
    test=ExtraitChaîne(Valeurfichier,8,"&")
    Table1.Colonne8..Titre=test
    test=ExtraitChaîne(Valeurfichier,9,"&")
    Table1.Colonne9..Titre=test
    test=ExtraitChaîne(Valeurfichier,10,"&")
    Table1.Colonne10..Titre=test
    test=ExtraitChaîne(Valeurfichier,11,"&")
    Table1.Colonne11..Titre=test
    Plutôt sale non?

    J'ai donc penser qu'avec un superchamps et une boucle for ce serait plus simple, mais je n'arrive pas...

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    donne est une chaîne
    POUR i=1 A 2
    	test=ExtraitChaîne(Valeurfichier,i,"&")
    	donne={Table1.Colonne1+[i]}..Titre
    	donne=test
    FIN
    Et voici l'erreur qu'il me retourne:
    L'opérateur d'indirection { } est interdit avec une chaîne vide comme paramètre.

    Merci de votre aide, en espérant avoir été clair...

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    N'oubliez pas l'aide en ligne !

    Si vous la consultez à propos de ExtraitChaîne, le parcours de sous-chaîne répond à votre problématique.

    1. il faut déterminer la condition de fin de votre boucle, EOT dans l'exemple, à tester en début ou en fin de boucle
    2. il faut choisir l'instruction de boucle

    Dans votre second code, vous avez changé le sens de l'affectation : vous affectez titre à donne au lieu d'affecter donne à titre et en plus vous avez conservé le 1 en fin de colonne1, ce qui vous fera commencer immanquablement à 11.

    In fine, en une instruction, après avoir posé que i = 1 avant d'entrer dans votre boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {Table1.Colonne + NumériqueVersChaîne([i])}..Titre  = ExtraitChaîne(Valeurfichier, i, "&")
    Bon travail,

    Hemgé

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    La syntaxe dans l'indirection n'est pas bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR i=1 A 2
    	{"Table1.Colonne" + i}..Titre = ExtraitChaîne(Valeurfichier,i,"&")
    FIN
    Tatayo.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup, ça marche.

    Mais je comprend pas lorsque j'utilise ce code là, qui est en gros comme le vôtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    donne est une chaîne
    POUR i=1 A 12
    	test=ExtraitChaîne(Valeurfichier,i,"&")
    	donne={"Table1.Colonne"+i}..Titre
    	donne=test
    FIN
    Sa marche pas pour les deux première colonnes alors que c'est exactement la même chose que le vôtre.

    Il manquait juste les guillemets et le 1 en trop en faite, c'est ça?

    Merci en tous cas!

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Non, ton code n'est pas similaire au mien.
    Pour savoir pourquoi, je t'invite à mettre un point d'arrêt sur la ligne 3, faire une execution pas à pas en regardant la valeur de tes variables (surtout donne).

    Petite piste: le problème se trouve ligne 5...

    Tatayo.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Je t'avoue que je n'ai pas trouver l'erreur même avec l'exécution pas a pas...

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Oups ! Désolé pour l'oubli des guillemets.
    Par contre, concernant NumériqueVersChaîne([i], je n'aime pas les conversions automatiques et je préfère utiliser systématiquement les fonctions ad-hoc.

    Vous devez relire l'aide sur l'indirection et comprendre ce qu'elle fait réellement.

    Les opérateurs { et } permettent d'accéder à un champ, une variable, un membre d'une classe ou une rubrique de fichier en construisant dynamiquement le nom du champ, de la variable, du membre de la classe ou de la rubrique.
    Un nom de variable pointe vers une zone mémoire où la valeur de la variable est stockée.
    Mais ce nom n'est a priori pas égal à la valeur qu'il représente.
    Dans i = 2, i et 2 sont deux choses différentes : i pointe vers une zone mémoire où les diverses valeurs de i vont être stockées au fur et à mesure du déroulement du programme.
    i restera i, mais sa valeur va successivement passer de 1 à 12 dans le cas qui vous préoccupe.

    Dans donne=test, donne et test sont deux variables mais aucune de désigne un nom de variable. Pour cela il faudrait utiliser les opérateurs d'indirection.

    Voyez l'aide.

    Hemgé

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Je pense avoir trouver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    i est un entier = 1
    POUR i=1 A 11
    	test=ExtraitChaîne(Valeurfichier,i,"&")
    	{"Table1.Colonne"+ i}..Titre=test
    FIN

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Oui et non :

    Il est inutile de poser i = 1, puisque vous l'assignez à 1 (de 1 à 11) dans votre boucle.
    i = 1 serait utile dans le cas d'une boucle TANTQUE par exemple, mais pas dans ce cas-ci.
    Allez relire l'aide avec le mot-clé BOUCLE. Vous verrez les diverses possibilités de contrôle.

    La variable "test" est totalement inutile. Remontez au dernier post de tatayo.
    En passant par test, vous ne gagnez rien.
    Au contraire, votre programme est moins clair et vous exécutez des instructions en trop.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    D'accord merci de vos conseils

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

Discussions similaires

  1. [VB.NET] Tableau "index was outside of bound array"
    Par guillaume1998 dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/11/2005, 14h07
  2. [perl]Problème tableau indexé
    Par LE NEINDRE dans le forum Langage
    Réponses: 8
    Dernier message: 25/08/2005, 21h24
  3. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39
  4. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14
  5. Tableau à index négatif
    Par karl3i dans le forum C
    Réponses: 14
    Dernier message: 23/10/2003, 17h17

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