Retourner un tableau [Résolu]

Messages postés
43
Date d'inscription
lundi 14 février 2005
Dernière intervention
30 janvier 2006
- - Dernière réponse : adressprov
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
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!
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Salut,

Et quel est le problème au juste ?

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
145
Date d'inscription
lundi 13 janvier 2003
Dernière intervention
27 décembre 2005
0
Merci
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)
Commenter la réponse de cs_poullos
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
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;
}
Commenter la réponse de Lutinore
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
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#
*/
Commenter la réponse de cs_coq
Messages postés
43
Date d'inscription
lundi 14 février 2005
Dernière intervention
30 janvier 2006
0
Merci
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!
Commenter la réponse de maxelpiratos
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Euh, l'erreur est sur quelle ligne ?

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
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.
Commenter la réponse de Lutinore
Messages postés
43
Date d'inscription
lundi 14 février 2005
Dernière intervention
30 janvier 2006
0
Merci
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;


}
Commenter la réponse de maxelpiratos
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Dernière intervention
24 mars 2007
0
Merci
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.
Commenter la réponse de adressprov
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
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.
Commenter la réponse de Lutinore
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Dernière intervention
24 mars 2007
0
Merci
Dnc a ton avis, il faut que je fasse de boucle pour initailiser mon tableau avec des éléments à vide 
Commenter la réponse de adressprov
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
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.
Commenter la réponse de Lutinore
Messages postés
63
Date d'inscription
mercredi 21 juin 2006
Dernière intervention
24 mars 2007
0
Merci
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
Commenter la réponse de adressprov

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.