Problème de référence d'objet [Résolu]

Signaler
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008
-
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

Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
ok

Et en mettant
public static string procValue = "";

?

Ca devrait être bon, non ?
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
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_
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

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.
Messages postés
66
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
25 février 2008
1
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();
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

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'"
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

Merci,

fallait le savoir.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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
Messages postés
38
Date d'inscription
mardi 31 juillet 2007
Statut
Membre
Dernière intervention
9 janvier 2008

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>