Retourner un tableau [Résolu]

Signaler
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006
-
adressprov
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
24 mars 2007
-
bonjour, je débute en C# et j'ai un soucis tout simple : je n'arrive pas à retourner un tableau dans une fonction :/

voilà le problème :


public
string[] Selection (
string selec)


{....



//declaration du tableau de récupération



string[] mon_tab;

................



return mon_tab;


}

merci d'avance!

14 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
C'est que je pensais, déclares ton tableau avant les crochets du while sinon il est local à la boucle et n'existe pas à l'extérieur. 2éme problème tu dois allouer de l'espace à ton tableau avec l'opérateur new avant de l'utiliser.
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
76
Salut,

Et quel est le problème au juste ?

/*
coq
MVP Visual C#
*/
Messages postés
145
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
27 décembre 2005
1
Le code que tu donnes ne doit poser aucun problème à priori, quel est le message d'erreur du compilateur ?

La brigade meurt mais ne se rend pas (Hisoka)
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
C'est tout simple ( sans tester j'avais pas capté non plus ^_^ ).


public
string[ ] Selection(
string selection )
{



//declaration du tableau de récupération



string[ ] mon_tab =
null;
// string[ ] mon_tab = new string[ 10 ];



// ...



return mon_tab;
}
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
76
Ouep, on la connait bien celle là à force
Je voulais juste qu'on nous donne la précision, parce que entre ablation du code et absence de message d'erreur, c'est un peu vague comme question.

/*
coq
MVP Visual C#
*/
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006

Merci de vos réponses mais je vais continuer de vous embéter,

la solution : string[ ] mon_tab = null; ne marche pas malheuresement!!

et l'erreur est la suivante :

Le nom 'mon_tab' n'existe pas dans la classe ni dans l'espace de noms 'System.ConSQL'

j'espère que ca vous aidera! perso je fais de l'ablation de code justement pour ne pas surcharger la question pour rien.

Merci d'avance!
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
76
Euh, l'erreur est sur quelle ligne ?

/*
coq
MVP Visual C#
*/
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
C'est autre chose alors.. ça ne se joue pas sur les 2 lignes de code que tu as donné, tu as un problème de "portée", ( une variable déclarée entre crochets peut être ). Faut mettre le code de la fonction en entier.
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006

l'erreur est sur la dernière <return> et petite précesion se sont les résultats de ma requete que je mets dans le tableau mais se sont bien des types string

voici tout le code si ca peut servir :


public
string[] Selection (
string selec)


{


OdbcDataReader myReader=
null;
// le lecteur de données



// affichage des colonnes



string ligne="";



int i;


OdbcCommand myOdbcCommand =
new OdbcCommand(selec);


myOdbcCommand.Connection = m_conn;


myReader=myOdbcCommand.ExecuteReader();



// affichage des données



while (myReader.Read())


{



// exploitation ligne courante



for(i=0;i<myReader.FieldCount;i++)


{


ligne+=myReader[i]+" ";



//declaration du tableau de récupération



string[] mon_tab=
null;


mon_tab[i]=ligne;


}


Console.WriteLine(ligne);


}
//while



return mon_tab;


}
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
24 mars 2007

Salut j'ai le même problème mais je n'ai pas réussit à le résoudre malgré ce post.

Voila ce que je fais :

private string[,] CreateTab() {

           

    string [,]RDV  = new string [7,31];

   

    //try au cas ou il y ai une erreur de connexion à la base de données

    try {

            Connexion à la base de données
           
           
      

           Requête SQL

           Je remplit mon DataSet

           foreach (DataRow myRow in monDataSet.Tables[0].Rows) {

               RDV[i,indice] = myRow[2].ToString();

            }

            catch (Exception ex) {

                    Response.Write(ex.Message);

            }

            finally {

                    if (maConnexion != null)

           
           
maConnexion.Close();

            }

    }

     return RDV;

}


Après j'appel mon tableau et c'est là que j'ai l'erreur "La référence d'objet n'est pas définie à une instance d'un objet."

string [,]TabRdv = CreateTabRdv();


for(int i = 0;i<7;i++) {

     for (int j = 0;j<31;j++) {

       
Response.Write("<script>alert("" +
TabRdv[i,j].ToString() + "");</script>");

    }

}


Je ne comprends pas pourquoi cette erreur apparait puisque j'ai bien renseigné mon tableau.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
Salut, je pense pas que ce soit ton tableau qui est null mais ses éléments, lors de la creation d'un tableau les types références qu'il contient ne sont pas initialisés mais null.

// Exemple :

string[ , ] tab = new string [ 7, 31 ];


MessageBox.Show( ( tab[ 6, 9 ] == null ).ToString( ) ); // true.


for ( int i = 0; i < 7; i++ )
    for ( int j = 0; j < 31; j++ )
        tab[ i, j ] = string.Empty;

MessageBox.Show( ( tab[ 6, 9 ] == null ).ToString( ) ); // false.
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
24 mars 2007

Dnc a ton avis, il faut que je fasse de boucle pour initailiser mon tableau avec des éléments à vide 
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
Il me semble que le problème vient de là..

Si tu fais :

TabRdv[i,j].ToString( )
 
et que l'élément du tableau n'est pas initialisé tu as une NullReferenceException.
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
24 mars 2007

Ok merci Admin, je vais faire sa alors.

Ce qui est un peu chiant la dessus c'est que tu perds du t'en pour mettre ton tableau à vide.

Je parle bien sur de temps d'execution.


En tout cas, MERCI pour ton aide