Erreur "La référence d'objet n'est pas définie à une instance d'un objet." [Résolu]

Signaler
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010
-
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010
-
Bonjour,

Après moultes tentatives de passages de variables, j'avais trouvé cette technique qui semblent fonctionner, mais j'obtiens une erreur qui me dit:

"L'exception NullReferenceException n'a pas été gérée. La référence d'objet n'est pas définie à une instance d'un objet."

Pour le moment j'ai ceci en code:
Affichage_Image

maform2;

public
string Code;
public

string CodeStim;

public
void setform(
Affichage_Image blabla2){maform2 = blabla2;}

Et plus loin, j'utilise la valeur maform2.Code en faisant:
donnees1[n].CodeStim = maform2.Code;

Et Code est déclaré et utilisé dans la Forme Affichage_Image, et varie à l'intérieur de cette Forme au cours du temps.

Savez-vous comment résoudre cette erreur?

Merci de me dire si vous connaissez un moyen simple de résoudre ça car j'ai tenté plein de méthodes pr passer des variables et c'est la seule qui semble être possible.

10 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Là, tu code la méthode setform, mais quand l'utilises-tu ?
Si tu ne l'utilise jamais, le programme ne passe jamais dedans, et c'est normal que maform2 soit null.

Amicalement, SharpMao
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Houraaaaa j'ai trouvé!!!

Il se trouve que Affichage_Image était elle-même initialisée par une Forme principale (qui initialisait Enregistrement ET Affichage_Image) et donc, en faisant ce que je faisais, je mettait à zéro mes données aux yeux de la Forme principale après qu'elle ait appelé les fonctions.

J'ai donc réussi à bidouiller mon code pour que les initialisations se déroulent en même temps afin de ne eprdre aucun données.

En tout ca,s j'aurais pas trouvé ça sans toutes vos aides, qui m'ont mis la puce à l'oreille sur certains points de mon code.

Donc vraiment merci à tout le monde !!!!!

;)
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Hello,

Si ton erreur vient bien de la ligne  : donnees1[n].CodeStim = maform2.Code;
C'est soit que donnees1[n] est null, soit que myform2 est null.

Amicalement, SharpMao
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Oui je confirme que c'est cette ligne qui est surlignée, l'erreur est bien sur la ligne:

donnees1[n].CodeStim = maform2.Code;

Cependant, je ne sais pas comment corriger cette erreur, car Code est bien déclaré et maform2 également (enfin d'après ce que je pense).

Je les ai déclaré comme je l'ai marqué dans mon premier message.

Savez-vous comment remédier à cette erreur?
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Déclaré ne veut pas dire pas instancié. Bien sûr que c'est déclaré sinon ca ne compilerait pas. Maintenant comme t'as dit sharpmao soit maform2 est null soit donnees1.

::|The S@ib|:: MVP C#.NET
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Hello,

Le moyen le plus simple de déterminer ce qui est null est le suivant :

tu mets un breakpoint à la ligne concernée, et tu vérifies si donnees1[n] ou maform2 est null.

Comme l'as dit TheSaib, il ne faut pas confondre déclaré et instancié.

Si tu fait

public string Code;
c'est équivalent à
public string Code = null;
et différent de
public string Code = "";

La même chose est valable avec des objets plus complexe
Affichage_Image test = new Affiche_Image();

Amicalement, SharpMao
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Merci à tous pr vos réponses!


 


J'ai donc vu que le souci venait de ce pb de "null". Mais si je réalise un:


if (maform2 == null)


{ maform2 = new Affichage_Image();}


Cela fonctionne, je n'ai plus d'erreur, mais je perd les valeurs des variables qui ont varié dans Affichage_Image....ce qui m'embete puisque mon but est de récupérer les valeurs des variables de Affichage_Image() et de les utiliser dans l'autre Form...

Je suis totalement perdu...
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Attention encore,

Il ne faut pas confondre classe (Affichage_Image)
et instance (maform2)

Tu ne peux pas utiliser de variables dans une classes, (sauf si elles sont static, mais c'est une autre histoire)
par contre tu peux les utiliser dans une instance de cette classe.

Juste par curiosité, comment fais-tu l'appel à la méthode SetForm ?

Amicalement, SharpMao
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Et bien je le fais en codant :

public void setform(Affichage_Image blabla2)
        {
            maform2 = blabla2;
        }   

C'est incorrect? Mon pb peut venir de là?
Messages postés
41
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
11 juin 2010

Dans mon Affichage_Image, j'ai codé:

Enregistrement enreg2 = new Enregistrement();

et ensuite: enreg2.setform(this);

Il manque quelque chose? Il y a une erreur?