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 :

Problème TableauAjouteLigne avec 2 dimensions [WD17]


Sujet :

WinDev

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut Problème TableauAjouteLigne avec 2 dimensions
    Bonjour,
    je crée un tableau à 2 dimensions, que je remplis dans une boucle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nDim est un entier = TableOccurrence(TABLE_Rubriques)
    tabCorrespondance est un tableau [nDim,2] chaînes
    sRub1, sRub2 est une chaine
     
    POUR TOUTE LIGNE DE TABLE_Rubriques
    sRub1=TABLE_Rubriques.COL_Rubriques_du_fichier_importé
    sRub2=tabCols[TABLE_Rubriques.COL_Rubriques_correspondantes_dans_la_base_de_données]
    TableauAjouteLigne(tabCorrespondance,sRub1,sRub2)	
    FIN
    A la fin, le tableau est désespérément vide ! Pourtant sRub1 et sRub2 contiennent bien les chaines attendues.
    Aucune erreur levée, TableauAjouteLigne ne renvoie pas -1 (testé) alors pourquoi mon tableau ne se remplit pas ?

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    essaye avec la syntaxe la

    Dans ton cas cela donnerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    POUR TOUT TABLE_Rubriques
    sRub1=TABLE_Rubriques.COL_Rubriques_du_fichier_importé
    sRub2=tabCols[TABLE_Rubriques.COL_Rubriques_correspondantes_dans_la_base_de_données]
    TableauAjouteLigne(tabCorrespondance,sRub1,sRub2)	
    FIN
    Tiens nous au courant
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je viens de faire un essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    tabCorrespondance est un tableau 0, 2 chaînes
     
    sRub1, sRub2 est une chaîne
     
    POUR i = 1 A 2
    	sRub1=i
    	sRub2=i*2
    	TableauAjouteLigne(tabCorrespondance,sRub1,sRub2)	
    FIN
    Trace(TableauOccurrence(tabCorrespondance))
    STOP
    semble fonctionner, mais si au départ j'initialise le tableau à nDim, le début du tableau sera rempli de ndim entrées à vide.

    Si le tableau est déjà dimensionné, il ne faut pas ajouter les lignes, mais modifier les lignes existantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    tabCorrespondance est un tableau 2, 2 chaînes
     
    sRub1, sRub2 est une chaîne
     
    POUR i = 1 A 2
    	sRub1=i
    	sRub2=i*2
    	tabCorrespondance[i, 1] = sRub1
    	tabCorrespondance[i, 2] = sRub2
    FIN
    Trace(TableauOccurrence(tabCorrespondance))
    STOP
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  4. #4
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Salut,

    Complètement d'accord avec Delphi !

    Si tu dimensionne ton tableau au debut, tu ne peux plus rajouter des lignes !
    - Soit déclarer un tableau de 0 par 0 chaines
    - Soit dimensionner le tableau au début mais modifier les lignes qu'il contient

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OK. Merci pour toutes ces précisions. J'ignorais que la déclaration du tableau dimensionné créait des lignes vides.
    Ce code fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    nDim est un entier = TableOccurrence(TABLE_Rubriques)
    tabCorrespondance est un tableau [nDim,2] chaînes
    sRub1, sRub2 est une chaîne
    i est un entier = 1
    POUR TOUTE LIGNE DE TABLE_Rubriques
    sRub1 = TABLE_Rubriques.COL_Rubriques_du_fichier_importé
    sRub2=tabCols[TABLE_Rubriques.COL_Rubriques_correspondantes_dans_la_base_de_données]
    tabCorrespondance[i,1] = sRub1
    tabCorrespondance[i,2] = sRub2		
    i++
    FIN
    Merci à tous !

  6. #6
    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
    Bonsoir

    Deux questions / suggestions au passage, mais sans plus puisque nous n'avons pas de détails et qu'il ne s'agit sans doute que de code pour étudier le problème.

    1 Pourquoi passez-vous par les variables intermédiaires sRub1, sRub2 ?
    Vous pourriez fusionner les lignes 6 et 8, ainsi que 7 et 9.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    nDim est un entier = TableOccurrence(TABLE_Rubriques)
    tabCorrespondance est un tableau [nDim,2] chaînes
    sRub1, sRub2 est une chaîne
    i est un entier = 1
    POUR TOUTE LIGNE DE TABLE_Rubriques
    <s>sRub1 = TABLE_Rubriques.COL_Rubriques_du_fichier_importé</s>
    <s>sRub2=tabCols[TABLE_Rubriques.COL_Rubriques_correspondantes_dans_la_base_de_données]</s>
    tabCorrespondance[i,1] = <s>sRub1</s> TABLE_Rubriques.COL_Rubriques_du_fichier_importé
    tabCorrespondance[i,2] = <s>sRub2</s> tabCols[TABLE_Rubriques.COL_Rubriques_correspondantes_dans_la_base_de_données]	
    i++
    FIN
    2. Regardez les fonctions FichiersVers ... Table, Mémoire etc qui pourraient peut-être vous être utiles, bien que le fichier que vous importez n'est sans doute pas un fichier HyperFile.

    Hemgé

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Merci pour ces suggestions mais :
    • effectivement le fichier importé n'est pas un fichier Hyperfile mais un simple fichier texte
    • l'utilisation des variables, c'est tout simplement parce que je pensais que mon problème venait peut-etre d'un bug de WinDev qui avait du mal avec l'affectation directe des données dans le tableau ; j'ai un peu tout essayé pour trouver d'où ça venait. Voilà.

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

Discussions similaires

  1. Problème avec les dimensions des matrices
    Par Épanouissement dans le forum Simulink
    Réponses: 0
    Dernier message: 09/10/2014, 14h21
  2. problème avec"assignment dimension mismatch"
    Par george216 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/04/2010, 18h24
  3. Problème extern avec un tableau à 2 dimensions
    Par bog333 dans le forum Débuter
    Réponses: 5
    Dernier message: 07/10/2008, 21h44
  4. Problème avec la dimension d'une fenêtre
    Par sfpx dans le forum Delphi
    Réponses: 2
    Dernier message: 01/05/2007, 18h39

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