Enumération d'une ArrayList à deux colonnes

Résolu
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006 - 13 janv. 2006 à 10:46
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006 - 13 janv. 2006 à 16:25
Bonjour à tous.



Avant tout, je tiens à préciser que je débute en C# (version framework
2.0) et que je viens de VB (grosse expérience, d'où certaines mauvaises
habitudes et un manque de 'vrai' programmation objet)



J'ai un soucis sur une ArrayList, je la créer à partir d'un tableau à
une colonne, simplement lorsque je souhaite récupérer les différents
éléments, ligne de tableau par ligne de tableau, ca ne va pas. Je
récupère tous les éléments de manière séquentielle.

Voici le code :



Class

{

private String[] C_tab_Entrainements = new String[4];

private ArrayList C_arl_Entrainements = new ArrayList();



// Procédure d'écriture

private void C_PROC_Ecriture()

{

for(Colonne = 0; Colonne < 5; Colonne ++)

C_tab_Entrainements [Colonne] = "Colonne " + Colonne;

C_arl_Entrainements.AddRange(C_tab_Entrainements);



for(Colonne = 0; Colonne < 5; Colonne ++)

C_tab_Entrainements [Colonne] = "ColonneBis " + Colonne;

C_arl_Entrainements.AddRange(C_tab_Entrainements);



C_PROC_Lecture(C_arl_Entrainements, 1)

}



// Procédure de lecture

private void C_PROC_Lecture(ArrayList Tableau, Byte Colonne)

{

foreach(Tableau. s in Tableau)

{

MessageBox.Show(s.ToString());

}

}



}



Au démarrage j'avais utilisé Add au lieu de AddRange, et dans le cas
d'une recherche sur un élément, il m'indiquait le type du tableau
(String[]).

Je ne sais donc pas où placer l'appel à la bonne colonne, je pourrais
toujours utiliser une boucle d'itération pour ne lire que les éléments
voulu, mais n'y a t il pas une solution plus directe ?

Pourriez vous SVP m'indiquer où se situe mon problème ?



Merci d'avance

6 réponses

taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
13 janv. 2006 à 11:03
Class
{
private String[] C_tab_Entrainements = new String[4];
private ArrayList C_arl_Entrainements = new ArrayList();

// Procédure d'écriture
private void C_PROC_Ecriture()
{
for(Colonne = 0; Colonne < 5; Colonne ++)
C_tab_Entrainements [Colonne] = "Colonne " + Colonne;
C_arl_Entrainements.AddRange(C_tab_Entrainements);
// ici, tu ajoutes tes 5 éléments à la fois , donc dans l'arraylist, tu as mis
//5 éléments , et non pas l'élement tableau


Le truc s'est de savoir si tu veux faire une arraylist de tableau, ou une arraylist d'élément.

Apparement, tu veux faire une arraylist de tableau ( en gros un tableau de tableau )

dans ce cas, ton code devient
Class
{
private String[] C_tab_Entrainements = new String[4];
private ArrayList C_arl_Entrainements = new ArrayList();

// Procédure d'écriture
private void C_PROC_Ecriture()
{
for(Colonne = 0; Colonne < 5; Colonne ++)
C_tab_Entrainements [Colonne] = "Colonne " + Colonne;
C_arl_Entrainements.Add(C_tab_Entrainements);

for(Colonne = 0; Colonne < 5; Colonne ++)
C_tab_Entrainements [Colonne] = "ColonneBis " + Colonne;
C_arl_Entrainements.Add(C_tab_Entrainements);

C_PROC_Lecture(C_arl_Entrainements, 1)
}

// Procédure de lecture
private void C_PROC_Lecture(ArrayList Tableau, Byte Colonne)
{
string[] tab ;
foreach(object s in Tableau)
{//pour chaque tableau
try
{
// je convertis mon objet en tableau de string
tab = (string[]) s ;
string listElement = string.Empty;
if(s != null et s.Lenght >0)
{
for(int i = 0 ; i <s.Lenght ; i++)
{// je lis chaque élément du tableau
listElement += s[i] + " ";
}
}
MessageBox.Show(listElement) ;
}
catch(Exception exp)
{
MessageBox.Show("Erreur, taoetc ne raconte que des conneries car :" + exp.Message);
}


}
}

}


Be happy , by
Tao
3
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
13 janv. 2006 à 15:17
Bon,



j'ai donc trouvé où le bas blaisse, c'est au niveau de la variable
tableau, tant que celle ci n'est pas obsolète, l'ArrayList s'y réfère,
en faisant une boucle comme suit :

// Procédure d'écriture

private void C_PROC_Ecriture()

{

for(Cpt = 0; Cpt < 2; Cpt ++)

{



String[] C_tab_Entrainements = new String[4];

for(Colonne = 0; Colonne < 5; Colonne ++)


C_tab_Entrainements [Colonne] = "Colonne " + Cpt + "
" + Colonne;

C_arl_Entrainements.Add(C_tab_Entrainements);



}

C_PROC_Lecture(C_arl_Entrainements, 1)

}



j'ai contourné le problème, d'où ma question, comment peut on rendre
une variable obsolète, de façon à ce que l'ArrayList prennent ces
dernières valeures acquisent et passe à autre chose ?



Merci
3
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
13 janv. 2006 à 12:40
Bon grosso modo ça avance, j'ai remplacé quelques éléments qui étaient eronnés apparement :



if(tab != null et tab.Lenght >0)


{

for(int
i = 0 ; i <tab.Length ; i++)


{// je lis chaque élément du tableau

listElement
+= tab[i] + " ";


}


}



Y a encore un truc.

Il me sort toujours le dernier élément (Liste des ColonneBis) 2 fois,
soit le nombre de messages attendus, mais pas les bonnes données.



Deux questions subsidiaires :

tab = (string[]) s ; C'est ça qu'on appelle le cast ?

Quelle différence entre string et String ?



Merci encore
0
taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
13 janv. 2006 à 15:22
fait un new dessu si tu veux te reservir de la variable, ou alors la mettre égale à null
cela ne marche que si c'est un objet

tab = (string[]) s oui c'est un cast,

et différence entre String et string, heu, aucune idée. J'utilise toujours string


Be happy , by
Tao
0

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

Posez votre question
taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
13 janv. 2006 à 15:23
Autre chose, c'est bien de valider la solution , meme si c'est toi qui la poste.
Ca évite au personnes qui veuillent répondre d'ouvirir le post si la réponse est déjà donnée.


Be happy , by
Tao
0
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
13 janv. 2006 à 16:25
Ok, merci.



Pour les différence entre String et string, Byte et byte ...

Il n'y en a pas, ceux avec les minuscules sont des alias des
system.String ... L'avantage qu'ils ont ceci dit, c'est leur meilleure
visibilité dans le code vue leur couleur et le fait qu'ils soit en gras
ou non (Référence ou valeur)



Voilà



Merci encore.
0
Rejoignez-nous