Retourner un tableau

Résolu
maxelpiratos Messages postés 43 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 30 janvier 2006 - 30 nov. 2005 à 14:44
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007 - 3 août 2006 à 16:07
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

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
30 nov. 2005 à 17:27
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.
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
30 nov. 2005 à 14:53
Salut,

Et quel est le problème au juste ?

/*
coq
MVP Visual C#
*/
0
cs_poullos Messages postés 145 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 27 décembre 2005 2
30 nov. 2005 à 15:41
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)
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
30 nov. 2005 à 16:02
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;
}
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
30 nov. 2005 à 16:25
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#
*/
0
maxelpiratos Messages postés 43 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 30 janvier 2006
30 nov. 2005 à 16:59
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!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
30 nov. 2005 à 17:02
Euh, l'erreur est sur quelle ligne ?

/*
coq
MVP Visual C#
*/
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
30 nov. 2005 à 17:19
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.
0
maxelpiratos Messages postés 43 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 30 janvier 2006
30 nov. 2005 à 17:19
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;


}
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
31 juil. 2006 à 15:08
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.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 août 2006 à 02:20
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.
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
2 août 2006 à 16:50
Dnc a ton avis, il faut que je fasse de boucle pour initailiser mon tableau avec des éléments à vide 
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
2 août 2006 à 22:43
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.
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
3 août 2006 à 16:07
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
0
Rejoignez-nous