Enumération d'une ArrayList à deux colonnes [Résolu]

kbalevil 23 Messages postés dimanche 17 novembre 2002Date d'inscription 11 août 2006 Dernière intervention - 13 janv. 2006 à 10:46 - Dernière réponse : kbalevil 23 Messages postés dimanche 17 novembre 2002Date d'inscription 11 août 2006 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
taoetc 346 Messages postés lundi 8 septembre 2003Date d'inscription 3 septembre 2007 Dernière intervention - 13 janv. 2006 à 11:03
3
Merci
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

Merci taoetc 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Commenter la réponse de taoetc
Meilleure réponse
kbalevil 23 Messages postés dimanche 17 novembre 2002Date d'inscription 11 août 2006 Dernière intervention - 13 janv. 2006 à 15:17
3
Merci
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

Merci kbalevil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Commenter la réponse de kbalevil
kbalevil 23 Messages postés dimanche 17 novembre 2002Date d'inscription 11 août 2006 Dernière intervention - 13 janv. 2006 à 12:40
0
Merci
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
Commenter la réponse de kbalevil
taoetc 346 Messages postés lundi 8 septembre 2003Date d'inscription 3 septembre 2007 Dernière intervention - 13 janv. 2006 à 15:22
0
Merci
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
Commenter la réponse de taoetc
taoetc 346 Messages postés lundi 8 septembre 2003Date d'inscription 3 septembre 2007 Dernière intervention - 13 janv. 2006 à 15:23
0
Merci
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
Commenter la réponse de taoetc
kbalevil 23 Messages postés dimanche 17 novembre 2002Date d'inscription 11 août 2006 Dernière intervention - 13 janv. 2006 à 16:25
0
Merci
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.
Commenter la réponse de kbalevil

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.