Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1186 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Que signifie ce message d'erreur [débutant]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Que signifie ce message d'erreur [débutant]

n°1412407
Berceker U​nited
PSN : berceker_united
Posté le 24-07-2006 à 16:01:39  profilanswer
 

"La référence d'objet n'est pas définie à une instance d'un objet."
 
Voila. J'ai une requête et maintenant j'ai un problème avec les types de champs et le cast. Je ne comprend pas ce qu'il me demande.
 
 

Code :
  1. public Version[] getVersion(){
  2.             int i = 0;
  3.             SQLServer objManageSQL  = new SQLServer();           
  4.             Version[] objArrVersion = new Version[0];
  5.             objManageSQL.Connexion();
  6.             SqlDataReader reader = objManageSQL.Execute("SELECT idversion,version FROM tb_version ORDER BY [date]" );
  7.            
  8.                objArrVersion = new Version[1];
  9.                 while(reader.Read()){
  10.                     if(reader.GetValue(1) != DBNull.Value){                       
  11.                         objArrVersion[i].Id = (int) reader.GetSqlInt32(0); //il est la mon problème
  12.                     }
  13.                     if(reader.GetValue(2) != DBNull.Value){
  14.                         objArrVersion[i].Numero = (String) reader.GetSqlString(1); //la aussi.
  15.                     }
  16.                     i++;
  17.                 }                           
  18.             return objArrVersion;
  19.         }
  20.     }


 
Ce qui est chiant c'est que dans un autre proojet ça a fonctionné j'ai fais qu'une adaptation. J'en suis sur que c'est un truc de débutant et que dans 6 mois je vais me dire "Puneze dire que t'as lutté pour ça  :pfff: "
Quelqu'un aurait une idée?

mood
Publicité
Posté le 24-07-2006 à 16:01:39  profilanswer
 

n°1412431
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-07-2006 à 16:24:51  profilanswer
 

=> tu tente d'accéder à un objet qui n'existe pas.
 
dans ta ligne qui merde, déjà :
 
(int) reader.GetSqlInt32(0)
=> le (int) est inutile, puisque que GetSqlInt32() retourne déjà un int, donc pas besoin de le transtyper.
=> vérifie que GetSqlInt32 existe bien dans reader
=> objArrVersion[0] n'est pas créé. La ligne ou tu mets "new Version[1]" à l'objet ne crée pas les objets à chaque ligne, ça ne fait que forcer le type.

n°1412441
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2006 à 16:36:11  profilanswer
 

le pb se situe ligne 4 et ligne 9
- ligne 4: à quoi sert elle ? tu ne créé rien du tout ici
- ligne 9 : tu créé un tableau de 1 objet Version. or, plus tu vas incrémenter i, plus tu vas te déplacer dans ton tableau, et donc tu vas accéder à un objet qui n'existe pas (à partir de i == 2 en fait)
 
edit: [:benou_grilled]

Message cité 1 fois
Message édité par Harkonnen le 24-07-2006 à 16:36:34

---------------
J'ai un string dans l'array (Paris Hilton)
n°1412444
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-07-2006 à 16:38:56  profilanswer
 

Harkonnen a écrit :

le pb se situe ligne 4 et ligne 9
- ligne 4: à quoi sert elle ? tu ne créé rien du tout ici
- ligne 9 : tu créé un tableau de 1 objet Version. or, plus tu vas incrémenter i, plus tu vas te déplacer dans ton tableau, et donc tu vas accéder à un objet qui n'existe pas (à partir de i == 2 en fait)
 
edit: [:benou_grilled]


pas complètement grillé, parceque j'avais pas vu le i++ qui pètera de toute façon à la seconde ligne :)

n°1412455
Berceker U​nited
PSN : berceker_united
Posté le 24-07-2006 à 16:48:15  profilanswer
 

Effectivement, j'avais trop le nez dedans pour manquer de recule. Des erreurs de débutant en plus qui n'est pas propre à ce language :/
Bon ben je vais aller me cacher  [:ciler]

n°1412458
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-07-2006 à 16:53:13  profilanswer
 

Berceker United a écrit :

Effectivement, j'avais trop le nez dedans pour manquer de recule. Des erreurs de débutant en plus qui n'est pas propre à ce language :/
Bon ben je vais aller me cacher  [:ciler]


ouais, si, en vb ça passe :D

n°1412468
Berceker U​nited
PSN : berceker_united
Posté le 24-07-2006 à 17:02:36  profilanswer
 

Voici le code modifier. Alors je sais qu'il aurait été préféré d'utiliser un ashTable mais bon comme c'est pour faire un petit truc en arriere plan je vais me contenter de cela. Je sais que j'utilise la technique du "Chien malade" pour définir la taille du tableau objArrVersion  
 
 

Code :
  1. public Version[] getVersion(){
  2.             int i = 0;
  3.             int NbElement = 0;
  4.             SQLServer objManageSQL  = new SQLServer();
  5.             Version[] objArrVersion = new Version[0];
  6.             objManageSQL.Connexion();
  7.             SqlDataReader readerCnt = objManageSQL.Execute("SELECT COUNT(idversion) FROM tb_version" );
  8.             if(readerCnt.Read())NbElement = (int)readerCnt.GetSqlInt32(0);
  9.             readerCnt.Close();
  10.             SqlDataReader reader = objManageSQL.Execute("SELECT idversion,version FROM tb_version" );
  11.             if(NbElement > 0){
  12.                 objArrVersion = new Version[NbElement];
  13.                
  14.                 while(reader.Read()){
  15.                     objArrVersion[i] = new Version();
  16.                     if(reader.GetValue(0) != DBNull.Value){                       
  17.                         objArrVersion[i].Id = (int) reader.GetValue(0); //idversion                         
  18.                     }
  19.                     if(reader.GetValue(1) != DBNull.Value){
  20.                         objArrVersion[i].Numero = (String) reader.GetSqlString(1);
  21.                     }
  22.                     i++;
  23.                 }                           
  24.             }
  25.             return objArrVersion;
  26.         }
  27.     }

Message cité 1 fois
Message édité par Berceker United le 24-07-2006 à 17:06:56
n°1412470
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2006 à 17:02:55  profilanswer
 

Berceker United a écrit :

Effectivement, j'avais trop le nez dedans pour manquer de recule. Des erreurs de débutant en plus qui n'est pas propre à ce language :/


c'est exactement pour ce genre de raison qu'il ne faut surtout pas conseiller des langages comme le C à des débutants : si t'avais codé ça en C, t'aurais eu aucune erreur du compilo. par contre, t'aurais eu intéret à passer ta RAM au karcher ensuite :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°1412471
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2006 à 17:03:32  profilanswer
 

Arjuna a écrit :

ouais, si, en vb ça passe :D


<HS>tiens au fait, t'as vu que Taxiways a sorti une VA avec des canadairs ? :)</HS>


---------------
J'ai un string dans l'array (Paris Hilton)
n°1412475
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2006 à 17:05:10  profilanswer
 

Berceker United a écrit :

Voici le code modifier. Alors je sais qu'il aurait été préféré d'utiliser un ashTable mais bon comme c'est pour faire un petit truc en arriere plan je vais me contenter de cela. Je sais aussi que l'attribution de la taille est fait à la technique du "chien malade" :D


mais vire moi la ligne 5 qui ne sert à rien [:psychokwak]


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 24-07-2006 à 17:05:10  profilanswer
 

n°1412481
Berceker U​nited
PSN : berceker_united
Posté le 24-07-2006 à 17:08:22  profilanswer
 

Harkonnen a écrit :

mais vire moi la ligne 5 qui ne sert à rien [:psychokwak]


Je sais c'est crading mais il faut que je retourne un truc non ?
 
dite vous vous êtes tous reveillez en même temps? :D moi ça me dérange pas j'y gagne   :whistle:  
 
Merci en tous cas pour vos aide  :jap:

Message cité 1 fois
Message édité par Berceker United le 24-07-2006 à 17:09:38
n°1412487
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-07-2006 à 17:14:45  profilanswer
 

Berceker United a écrit :

Je sais c'est crading mais il faut que je retourne un truc non ?


ben oui, mais tu alloues déjà objArrVersion à la ligne 12 :spamafote:
 

Code :
  1. if(NbElement > 0){
  2.                   objArrVersion = new Version[NbElement];
  3.                    
  4.                   while(reader.Read()){
  5.                       objArrVersion[i] = new Version();
  6.                       if(reader.GetValue(0) != DBNull.Value){                        
  7.                           objArrVersion[i].Id = (int) reader.GetValue(0); //idversion                        
  8.                       }
  9.                       if(reader.GetValue(1) != DBNull.Value){
  10.                           objArrVersion[i].Numero = (String) reader.GetSqlString(1);
  11.                       }
  12.                       i++;
  13.                   }
  14.               return objArrVersion;                            
  15.               }
  16.       else
  17.               return null;


(plus sécurisé, à toi ensuite de tester le retour de ta fonction)
 
ce qu'il faut faire ligne 5, c'est juste déclarer objArrVersion :

Code :
  1. Version[] objArrVersion;



---------------
J'ai un string dans l'array (Paris Hilton)
n°1412510
Berceker U​nited
PSN : berceker_united
Posté le 24-07-2006 à 17:29:14  profilanswer
 

Effectivement ça fait moin cradre et ça fonctionne. Je pensais qu'il fallait absolument qu'il y ait Version[] en sortie je ne pouvais pas retourner null.


Message édité par Berceker United le 24-07-2006 à 17:29:39
n°1412796
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2006 à 09:39:10  profilanswer
 

Harkonnen a écrit :

<HS>tiens au fait, t'as vu que Taxiways a sorti une VA avec des canadairs ? :)</HS>


<hs>Ah ouais pas mal :) Mais j'attends quand même FS 2006 pour m'y remettre :)</hs>

n°1412871
Berceker U​nited
PSN : berceker_united
Posté le 25-07-2006 à 11:04:32  profilanswer
 

<hsII>Canadaire? Dommage que je n'ai plus trop le temps d'y jouer :( ça me manque il faut avouer. Mon rêve refaire un gros Antonov 225 bien balour  :love:</hsII>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Que signifie ce message d'erreur [débutant]

 

Sujets relatifs
mysql_result(): message d'erreurErreur de recensement de fichier avec readdir
Citation de message dans un forumErreur dans la suppression d'un compte utilisateur
DEVCPP et QT4 => question d un debutantErreur java.lang.NullPointerException
erreur ClassCastExceptionerreur définie par l'application ou par l'objet résolu
PROBLEME DE DEBUTANT VRAIMENT PAS TRES DOUE 
Plus de sujets relatifs à : Que signifie ce message d'erreur [débutant]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR