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

VC++ .NET Discussion :

[C++.NET] erreur "aucune ligne"


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut [C++.NET] erreur "aucune ligne"
    Bonjour à tous,
    Alors j'ai une erreur lors de l'execution d'une partie de mon code:
    il me dit qu'il n'y a pas de ligne a la position 2 par exemple.
    Alors que mon tableau (datagrid) comporte bien 3 lignes:
    10 | 10
    20 | 200
    (null) | (null)

    Pourtant j'ai bien quelque chose à la ligne 2 (qui est null normalement).

    Et lorsque je compte les lignes de mon tableau avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nblignes=fen_carac->Table_asp1->Rows->Count;
    et que je laffiche il mindique qu'il y a 2 lignes.

    Quand il n'y a rien dans mon tableau a part:
    (null) | (null)
    il m'affiche bien 0 lignes.

    J'ai donc essaye de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int nblignes=fen_carac->Table_asp1->Rows->Count;
    nblignes = nblignes-1;
    Et la pas d'erreur mais le programme plante ou boucle a linfini (je sais pas).

    Je pense que l'erreur vient de ces lignes la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (a=0;a<nblignes;a++)

    Voici mon code:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    /////variables pour boucles/////
        int x=0;
        int y=0;
        int i=1;
        int a=0;
        int j=0;
        int k=0;
        ////////////////////////////
        int nbr_comp=0;
        int max=0;
        int min=0;
        int testabs=0;
        int testangle=0;
        int valeur_trouvee=0;
        int nblignes=fen_carac->Table_asp1->Rows->Count;
        float distance=0;
        float precip=0;
        float precipT=0;
        const double PI=3.141592;
     
       for(y=1;y<=(fen_dim->piste_long);y++)
       {
        for(x=1;x<=(fen_dim->piste_larg);x++)
        {
         //Test angle
         testabs = abs((y-(fen_position->pos_long_asp1))/(x-(fen_position->pos_larg_asp1)));
         testangle = abs(Math::Tan((((fen_position->angle1)/2)*PI)/180));
         while(testabs<testangle)
         {
           distance = Math::Sqrt(Math::Pow((x-(fen_position->pos_larg_asp1)),2.0)+(Math::Pow((y-(fen_position->pos_long_asp1)),2.0)));
           distance = Math::Round(distance,1);
           distance = distance*10;
           //min & max de la colonne distance
            for (a=0;a<nblignes;a++)//Pour chaque ligne
            {
             //Selection de la ligne
             DataRow* myRow1 = fen_carac->Table_asp1->get_Rows()->get_Item(k);
             //selection de la colonne 
             String* valeur_distance = myRow1->get_Item(0)->ToString();
             //Conversion de valeur_cellule en int pour traitement math
             nbr_comp = Convert::ToInt32(valeur_distance);
             k++;
             if (nbr_comp<min)
             {
              min=nbr_comp;
             }
             if(nbr_comp>max)
             {
              max=nbr_comp;
             }
            }
            //recup valeur precipitation
            while(distance!=valeur_trouvee)
            {
             for (a=0;a<nblignes;a++)//Pour chaque ligne
             {
              //Selection de la ligne
              DataRow* myRow2 = fen_carac->Table_asp1->get_Rows()->get_Item(j);
              //selection de la colonne 
              String* valeur_distance2 = myRow2->get_Item(0)->ToString();
              //Conversion de valeur_temp en int pour traitement math
              valeur_trouvee = Convert::ToInt32(valeur_distance2);
              j++; 
             }
            }
            j--;
            DataRow* myRow3 = fen_carac->Table_asp1->get_Rows()->get_Item(j);
            //selection de la colonne 
            String* precip_temp = myRow3->get_Item(1)->ToString();
            //Conversion de valeur_cellule en int pour traitement math
            precip = Convert::ToSingle(precip_temp);
            //Addition de precip pour chaque asperseurs
            precipT = precipT + precip;
            i++;
         }
        MessageBox::Show(Convert::ToString(precipT));
        }
       }
       }
    Merci @+++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Il va falloir que tu nous explique ce que tu comprend par null, car null en Csharp/C/C++ ou bien EN VB : Nothing ben ça veut dire "rien" donc si tu dis que a la ligne 3 de ton tableau il y a : "rien" ben c'est que il n'y a pas de ligne.
    Met donc une valeur valide plutot que de mettre null.

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Bah en fait c'est pas moi qui met "null" il s'y met automatiquement a cause de l'incrementation automatique des lignes. C'est a dire que lorsque jentre une valeur dans ma 1ere ligne, automatiquement une 2eme ligne se cree et ainsi de suite.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Citation Envoyé par raboin
    Bah en fait c'est pas moi qui met "null" il s'y met automatiquement a cause de l'incrementation automatique des lignes. C'est a dire que lorsque jentre une valeur dans ma 1ere ligne, automatiquement une 2eme ligne se cree et ainsi de suite.
    oui .... c'est juste "visuel" ... elle n'existe pas concretement.

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Oki d'accord ca ne cree pas de nouvelle ligne dans ma datatable.
    Mais pourquoi il y a cette erreur alors?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Quelle erreur ? celle la : ?
    il me dit qu'il n'y a pas de ligne a la position 2 par exemple.
    Alors que mon tableau (datagrid) comporte bien 3 lignes:
    10 | 10
    20 | 200
    (null) | (null)

    Pourtant j'ai bien quelque chose à la ligne 2 (qui est null normalement).
    Bien tout simplement car il a raison il n'y a rien a la ligne 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne 0 :  10 | 10
    ligne 1 :  20 | 200

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Alors ma question devient:
    Comment faire pour eviter qu'il me dise cela alors que j'utilise la fonction count pour compter le nombre de ligne et faire une boucle.
    Le pb c'est qu'il compte le bon nombre de lignes mais il ne sarrete pas.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int nblignes=fen_carac->Table_asp1->Rows->Count;
    for (a=0;a<nblignes-1;a++) 
    {
    .....
    }
    ça peut pas boucler a l'infini au niveau de ton for donc forcement c'est que ce que tu as mis a l'interieur de ta boucle qui plante et pour ça ben y'a quand meme le mode debug et c'est la seule manière de savoir.

    NB: je me demande pour quoi il y en a plein qui pose des problemes sur leur algorythme de parcours, le mieux c'est d'utiliser le mode debug et pas a pas. Pour connaitre la valeur de chaque variable (ou du moins celles concerner par l'algorythme) a chaque etape du programme. Serait-il possible de faire un petit lien dans la FAQ afin de rediriger ceux qui ne savent pas utiliser le mode DEBUG de VS afin que le probleme se resout de lui meme ou bien que certains puissent nous indiquer des informations plus precises concernants l'origine de leur plantages.

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    J'ai mis le nblignes-1 et cela me creer toujours la meme erreur.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Citation Envoyé par moi
    y'a quand meme le mode debug
    c'est que ce que tu as mis a l'interieur de ta boucle qui plante
    Donc indique ce que tu fait dans ta maudite boucle ça serait plus facile.
    Et sinon, tu peut utiliser le debugage pas à pas de ton Appli, car au moins tu pourrait nous dire a quel endroit est ton probleme car il ne vient pas de ton parcours de ta boucle for.
    Merci d'utiliser le debuger

  11. #11
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    J'ai chercher et mon erreur se trouverait sur cette ligne (si je ne me trompe pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataRow* myRow2 = fen_carac->Table_asp1->get_Rows()->get_Item(j);
    Donc jai change un truc et jai mis ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MessageBox::Show(Convert::ToString(a));
    DataRow* myRow2 = fen_carac->Table_asp1->get_Rows()->get_Item(a);
    donc si jai 4 valeurs dans mon tableau ca m fais dans ma messagebox:
    0 1 2 3 4
    et ensuite jai mon erreur mais sil fait ca ca veut dire kil passe 5 fois dans ma boucle et donc il cherche la vakeur se trouvant ligne 5 et ne la trouve pas. Car il me dit : aucune ligne a la position 4 ( donc il compte 5).

    Je pense que qu'il faut que je change le
    mais par quoi?

  12. #12
    Membre régulier Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    raboin a écrit:
    fait ca ca veut dire kil passe 5 fois dans ma boucle et donc il cherche la vakeur se trouvant ligne 5 et ne la trouve pas. Car il me dit : aucune ligne a la position 4 ( donc il compte 5).
    C'est bien tu es arrivé à une bon conclusion!

    Par contre:

    Je pense que qu'il faut que je change le

    Code :
    ()->get_Item(a);
    C'est faux.

    Si tu arrive à la conclusion que ton boucle ne fonctionne pas car il fait 5 tours à la place de 4, tu crois que c'est la bonne reflexion de dire ça..?
    Plutôt je chercherai comme ta dis ekinox17 "avec le debuger" de bien definir d'abord ta boucle et ensuite si tu as des boucles à l'infini de regarder bien si à l'interieur de ta boucle tu ne modifie pas quelque chose qui fait que ton application plante.

    Juste du sens commun!

    à +

Discussions similaires

  1. [Erreur] Aucune ligne à la position 0.
    Par a_ferre dans le forum Windows Forms
    Réponses: 7
    Dernier message: 03/02/2014, 18h56

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