Problème de référence d'objet

Résolu
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008 - 2 août 2007 à 12:10
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008 - 2 août 2007 à 15:06
Bonjour,

voici un bout de programme pour lire un fichier XML (J'ai supp ce qui ne sert pas à la résolution de ma question), mon problème vient de ma variable procValue, j'ai un message d'erreur "une référence d'objet est requise pour ...". J'ai cherché un peu partout, mais j'ai rien compris à comment la résoudre (je suis un super newbie):
http://forum.hardware.fr/hfr/Programmation/CNET-managed/probleme-compilation-sujet_70079_1.htm
http://www.developpez.net/forums/showthread.php?p=1546225#post1546225
http://www.csharpfr.com/infomsg_DEBUTANT-RENCONTRE-PRB-CSHARP_307874.aspx

Merci

public String procValue = "";
       
         public static void XMLSearch()
        {   
            while (test.Read())
            {
                 if (nType == XmlNodeType.Element)
                {
                    if (test.Name.Equals("process"))
                    {
                        procValue = test.GetAttribute("value");                       
                    }
                    MessageBox.Show(procValue);
                }
            }         
        }

8 réponses

cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
2 août 2007 à 14:05
ok

Et en mettant
public static string procValue = "";

?

Ca devrait être bon, non ?
3
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
2 août 2007 à 12:15
Bonjour,

essaie de remplacer
public String procValue = "";
par
public string procValue = ""; (sans la majuscule)

ou alors de mettre :
public String procValue = new String();

Les deux solutions devraient marcher.

Bonne Journée

_Syl_
0
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008
2 août 2007 à 12:28
Merci,

mais à mon grand regret ca ne fonctionne pas,

la 2ème solution me retourne: Aucune surcharge pour la méthode 'String' ne prend d'arguments 0.
0
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
2 août 2007 à 12:33
Re

La première solution (avec string en minuscule) te renvoie aussi une erreur ?
Si oui, est ce la même ?(Je vois bien une erreur du style impossible de convertir Object en string sur la ligne
procValue = test.GetAttribute("value");
qui se resoudra par un ToString();
procValue = test.GetAttribute("value").ToString();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008
2 août 2007 à 13:58
La première solution (s minuscule) me renvoi le même erreur "une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'ManagementProcess.Form1.procValue'"
0
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008
2 août 2007 à 14:10
Merci,

fallait le savoir.
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
2 août 2007 à 14:11
En debugant ton application, est ce que tu passes bien dans la ligne :

procValue = test.GetAttribute("value");

Et si oui, est ce que test.GetAttribute ne te renverrai pas null ? Si c'est le cas, procValue = null et la ligne MessageBox.Show(procValue); ne passe pas...

<hr size="2" width="100%" />Working as designed
0
cs_olden Messages postés 38 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 9 janvier 2008
2 août 2007 à 15:06
Je n'ai pas eu de problème, il à juste fallu que je mette MessageBox.Show(procValue); un peu plus bas:

                if (nType == XmlNodeType.Element)
                {
                    if (test.Name.Equals("process"))
                    {
                        procValue = test.GetAttribute("value");
                    }
                   
                }
            }
            MessageBox.Show(procValue);  
        }

car sinon il m'affichais une message box vide, puis après une message box avec ma valeur  (par contre je n'ai pas compris pourquoi).

J'espère avoir répondu à ta question! Sinon voici ma fonction, si elle peu répondre à ta question:

        public static String procValue = "";
       
        //Fonction de recherche dans un XML
        public static void XMLSearch()
        {
            XmlTextReader test = null;
            test = new XmlTextReader("C:\\fichier.xml");
            test.WhitespaceHandling = WhitespaceHandling.None;
            while (test.Read())
            {
                XmlNodeType nType = test.NodeType;
                if (nType == XmlNodeType.Element)
                {
                    if (test.Name.Equals("process"))
                    {
                        procValue = test.GetAttribute("value");
                    }                  
                }
            }
            MessageBox.Show(procValue);  
        }

et mon XML:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
     
</configuration>
0
Rejoignez-nous