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

Windows Forms Discussion :

reset de tableau


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut reset de tableau
    bonjours a tous et à toutes ,
    j'ai un question , dans mon code j'utilise un tableau de PointF.

    declaré comme ceci :

    j'aimerai le reinitialiser pour qu'il n'y ai plus rien dedans quand l'opération
    recommence. comment puis je faire?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PointF[] affichage = new PointF[lenght];

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ou encore Array.Clear(affichage, 0, affichage.Length);
    Par contre ça ne change pas la taille du tableau, ça met juste les valeurs par défaut dans toutes les "cases"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    cette réponse ne convient pas car le tableau n'est pas reseté...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    cette réponse ne convient pas car le tableau n'est pas reseté...
    Drole de réponse dans la mesure où le reset d'un tableau n'est pas vraiment une opération repertoriée et que tu te gardes bien de préciser ce que tu veux réellement : garder la dimension avec des éléments par défaut ou quoi ? Sachant que Point est un type value donc les élements du tableau ne peuvent être nuls.

    Donc ou tu fais :

    où tu le recrées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affichage = new Point[newLength];

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    je voudrai que le tableau soit a zero car par la suite je dois afficher le tableau dans une picturebox... => les zero m'ennuyerai ....

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    je voudrai que le tableau soit a zero car par la suite je dois afficher le tableau dans une picturebox... => les zero m'ennuyerai ....
    Dans ce cas tu l'affectes à null et c'est tout.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    je voudrai que le tableau soit a zero car par la suite je dois afficher le tableau dans une picturebox... => les zero m'ennuyerai ....
    ça veut dire quoi "que le tableau soit à zéro" ?
    - qu'il soit à null ?
    - qu'il soit vide (Length = 0) ?
    - que tous ses éléments soient null ? => pas possible avec PointF puisque c'est un type valeur
    - que tous ses éléments aient leur valeur par défaut (c'est à dire X = 0 et Y = 0) ? => C'est ce que font ma solution et celle d'Aeronia

    Il faudrait vraiment que tu expliques plus clairement ce que tu veux, parce que là on joue aux devinettes...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    je voudrai que ce tableau soit comme si je venais de le declarer : vide.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    je voudrai que ce tableau soit comme si je venais de le declarer : vide.
    Si tu viens de le déclarer, sans l'initialiser (comme dans ta question d'origine), alors il n'est pas vide, il est null... plus exactement, la variable contient une référence nulle, le tableau lui-même n'existe pas du tout. Si tu veux revenir dans cet état, fais simplement affichage = null;

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    en realité quand j'ouvre le fichier ... j'ai mis un point d'arret et si j'ouvre plusieurs fois le fichier, alors le tableau de pointf nommé affichage contient autant de fois le fichier ouvert.
    moi je que j'aimerai c'est que il ne contienne pas autant de fois ce fichier.

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    en realité quand j'ouvre le fichier ... j'ai mis un point d'arret et si j'ouvre plusieurs fois le fichier, alors le tableau de pointf nommé affichage contient autant de fois le fichier ouvert.
    moi je que j'aimerai c'est que il ne contienne pas autant de fois ce fichier.
    Merci d'être plus clair dans les explications. ce que tu décrits semble clairement être un problème dans ton code. Quel est le scope de cette variable ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    je viens de comprendre mon problème. tout bete en realité. je ne remet pas les variable a null dans la fonctione appelée. merci

    je te dis si ca fonctionne ou pas.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    il me semblais bien que ca n'irait pas comme sur des roulettes.

    le problème est celui ci maintenant :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
            private void btnouvrir_Click(object sender, EventArgs e)
            {
                degrelat = 0;
                minuteslat = 0;
                degrelong = 0;
                minuteslong = 0;
                conversionlat = 0;
                conversionlong = 0;
     
                geodata = null;
                PICTTBL = null;
                coordon = null;
                affichage = null;
     
     
                StreamReader lecture = new StreamReader("c:/champ.txt");
     
                while (lecture.EndOfStream!=true)
     
                {
                    string ligne =" ";
                    ligne = lecture.ReadLine();
                    degrelat = Convert.ToInt32(ligne.Substring(0,2));
                    minuteslat = Convert.ToDouble(ligne.Substring(2,7).Replace('.',','));
                    degrelong = Convert.ToInt32(ligne.Substring(10,3));
                    minuteslong = Convert.ToDouble(ligne.Substring(13, 7).Replace('.',','));
                    reccoord.Add(ligne);
                    affichage = agricoltraits(minuteslong, minuteslat, degrelat, degrelong);            
                }
     
            }
     
            PointF[] agricoltraits(double minuteslong , double minuteslat , int degrelat , int degrelong )
            {
                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    ///////////////////////////conversion d'angle en seconde en radian//////////////////////////////////
                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    // conversion en seconde
                    conversionlat = (degrelat * 3600) + (minuteslat * 60);
                    conversionlong = (degrelong * 3600) + (minuteslong * 60);
     
                    /* si on est a l'ouest,  la longitude est négative mais le gps ne l'indique pas au niveau des angle
                       si on est au sud , la latitude est négative mais le gps ne l'indique pas au niveau des angle
                     * se code ne s'y trouve plus attention car problème à resoudre par la suite 
                     */
     
                    // convrsion en radian
                    radlat = conversionlat * ((Math.PI) / (180 * 3600));
                    radlong = conversionlong * ((Math.PI) / (180 * 3600));
                    /*
                    formules
                    D= R*Math.Acos((Math.Sin (phi0) *Math.Sin (phi1))+ (Math.Cos (phi0)*Math.Cos(phi1)*Math.Cos(teta1-teta0)));
                     * le rayon moyen de la terre est de 6371km
                     * nous allons chercher la distance entre le point et l'équateur et entre le point et le méridien0
                     * pour cela , il faut soit annuler phi0 soit têta.
                     * ce qui revient a dire d'annuler soit lat soit long en fonction de la distance que l'on veut. 
                     * ces deux distance vont permettre de se reperer dans le plan X et Y pour pouvoir retracer le champ 
                    */
                    //distance entre Le point de l'equateur => on mesure une latitude. => même longitude
                    deb = 6371000 * Math.Acos(Math.Cos(radlat));
                    // distance entre le meridien et le point => on mesure une longitude => même latitude
                    dmb = 6371000 * Math.Acos(Math.Cos(radlong));
                //////////////////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////////////////// mise sous forme de point//////////////////////////////////
                //////////////////////////////////////////////////////////////////////////////////////////////////
                    coordonnees.X = Convert.ToSingle(dmb);
                    coordonnees.Y = Convert.ToSingle(deb);
     
                    if (length == 0)
                    {
                        // on a besoin connaître une valeur de départ => la premiere valeur que l'on a sera la valeur de référence 
                        // pour les minimums que programme va connaître
     
     
                        DEBMIN = coordonnees.Y;
                        DMBMIN = coordonnees.X;
     
     
                    }
                    geodata.Add(coordonnees);// on ajoute le point a la liste de pointf
     
     
                    // attention il faut minimum deux point .... 
                    if (length > 2)
                    {
                        foreach (PointF P in geodata)// on parcourt la liste de pointf
                        {
                            if (P.Y > DEBMAX)
                            {
                                DEBMAX = P.Y;
                            }
     
                            if (P.Y < DEBMIN)
                            {
                                DEBMIN = P.Y;
                            }
     
                            DELTADEB = DEBMAX - DEBMIN;// distance entre les deux points latitudinalement dont on a besoin 
     
                            if (P.X > DMBMAX)
                            {
                                DMBMAX = P.X;
                            }
     
                            if (P.X < DMBMIN)
                            {
                                DMBMIN = P.X;
                            }
     
                            DELTADMB = DMBMAX - DMBMIN;// distance entre les deux points longitudinalement dont on a besoin 
                            // instauration d'une echelle en X et en Y 
                            echelleX = (DELTADMB / pictureBox.Width);
                            echelleY = (DELTADEB / pictureBox.Height);
                        }
                    }
                    // pour retranscrir et centrer sur la picture box : 
                    // pt.X = (pictureBox1.Width / 2) + nombrex; // 
                    // pt.Y = (pictureBox1.Height / 2) - nombrey;// 
                    // de plus, on soustrait DMB a deb min pour la reference de la  picturebox1
     
                    PICTB.X = (pictureBox.Width / 2) + (echelleX * (Convert.ToSingle(dmb) - DMBMIN));
                    PICTB.Y = (pictureBox.Height / 2) - echelleY * (Convert.ToSingle(deb) - DEBMIN);
                    PICTTBL.Add(PICTB);
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    coordon = PICTTBL.ToArray();// tableau de pointf
                    length = length + 1;
                    return coordon;
                // on returne le tableau qui sera affiché sur la picture box
            }
     
            private void pictureBox1_Click(object sender, EventArgs e)
            {
     
            }
            }

    lorsque je remet la variable geodata, il me dit :

    l'exception nullreferenceexception n'a pas été gerée
    La référence d'objet n'est pas définie à une instance d'un objet.
    a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       geodata.Add(coordonnees);// on ajoute le point a la liste de pointf

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ce serait plus simple si tu montrais les déclarations des variables...

    Apparemment geodata est une liste, pas un tableau. Si tu appelles une méthode sur une variable qui est null, ça plante... Pour vider une liste, utilise la méthode Clear (ou alors affecte une nouvelle liste à la variable avec new)

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

Discussions similaires

  1. JSF/XHTML: Reset une seule ligne d'une tableau
    Par xeonDev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 08/02/2012, 00h02
  2. [HTML 4.0] Problème tableau/formulaire input (submit/reset)
    Par Flippe.66 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/02/2010, 20h41
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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