Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013
-
4 mars 2010 à 17:57
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013
-
5 mars 2010 à 12:20
Bonjour tout le monde,
J'ai un petit problème avec le message d'erreur suivant "la référence d'objet n'est pas définie à une instance d'un objet" dans un foreach.
Voici le code:
List<LangueInfoResponse> langueInfoResponses = new List<LangueInfoResponse>();
LangueInfoResponse langueInfoResponse = new LangueInfoResponse();
try
{
Langue langue = new Langue();
Dao dao = new Dao();
List<Langue> langues = dao.FindLangues(langue);
if (langues.Count != 0)
{
foreach (Langue langueList in langues)
{
//l'erreur arrive dès cette ligne
langueInfoResponse.LangueInfo.Id = langueList.Fields["Id"];
langueInfoResponse.LangueInfo.Langue = langueList.Fields["Langue"];
langueInfoResponse.Successful = true;
langueInfoResponses.Add(langueInfoResponse);
}
}
//...
En fait pour expliquer, "langueInfoResponse" est une structure de réponse qui contient un booléen et un string pour les message, ainsi qu'une autre structure "LangueInfo" qui contient tous les champs de ma base de donnée. Ce que je ne comprends pas, c'est pourquoi j'ai ce message d'erreur alors que j'instancie bien toutes mes variables avant le "try"...
Si quelqu'un pourrait m'apporter son aide pour résoudre ce problème, ca serait sympa!!
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013 5 mars 2010 à 12:20
Je vous remercie à tous les 2 pour vos réponses, j'ai modifié mon code pour utiliser directement la structure de donnée LangueInfo. Voilà le code au cas où ca pourrait servir un jour.
List<LangueInfo> langueInfos = new List<LangueInfo>();
Langue langue = new Langue();
Dao dao = new Dao();
List<Langue> langues = dao.FindLangues(langue);
if (langues.Count != 0)
{
foreach (Langue langueList in langues)
{
LangueInfo langueInfo = new LangueInfo();
langueInfo.Id = langueList.Fields["Id"];
langueInfo.Langue = langueList.Fields["Langue"];
langueInfos.Add(langueInfo);
}
}
Et maintenant tout marche bien, je récupère bien toutes les données de ma base.
Encore merci pour votre aide
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 5 mars 2010 à 09:40
Bonjour,
Et pourquoi ne pas mettre un point d'arrêt et regarder avec le "watcher" tes objets ?
Je miserai bien sur
langueInfoResponse.LangueInfo = null
ou
langueList.Fields = null
Par contre, je ne comprend pour pourquoi passer par un tableau de champs (langueList.Fields) ?
N'aurais-tu pas mieux fait de directement passer par un DataSet et remplir tes réponses ?
Bonne journée,
Billou_13
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013 5 mars 2010 à 10:23
Bonjour,
merci pour ta réponse. Pour répondre à ta question du dataset, ce n'est pas un projet personnel, mais professionnel, ce n'est donc pas moi qui ai choisi de passer un Dictionnary. Personnellement, je serais aussi passé par un dataset, mais bon. Je vais voir de plus près ce que tu m'as donné comme piste.
BunoCS
Messages postés15476Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 3 mai 2024103 5 mars 2010 à 11:00
Hello,
Langue langue = new Langue();
Dao dao = new Dao();
List<Langue> langues = dao.FindLangues(langue);
Je suppose que toutes les inits sont faites dans les contructeurs
if (langues.Count != 0)
{
foreach (Langue langueList in langues)
[...]
Pas besoin de vérifier la taille: si c'est vide, tu ne passeras pas dans le foreach
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...