IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Comment supprimer des élément d'une ArrayList ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut [C#] Comment supprimer des élément d'une ArrayList ?
    Bonjour,

    Pour je travaille avec une ArrayList de 8 colonnes contenant des infos sur n profils. Dans mon programme je souhaite dans certaines conditions supprimer des élément de cette liste : comment faire ?

    j'ai utilisé ces lignes ; une pour chaque colonne, mais visiblement les éléments ne sont pas supprimés. Voici donc les lignes de code, i étant incrémenté dans une boucle for pour parcour chaque profil et serveur, serveur_type, ... sont des constantes (de valeurs 0, 1, 2, ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    this.profilsTab[i,serveur].Remove(0,profilsTab[i,serveur].Length);
    this.profilsTab[i,serveur_type].Remove(0,profilsTab[i,serveur_type].Length);
    this.profilsTab[i,chemin].Remove(0,profilsTab[i,chemin].Length);
    this.profilsTab[i,profil_type].Remove(0,profilsTab[i,profil_type].Length);
    this.profilsTab[i,login].Remove(0,profilsTab[i,login].Length);
    this.profilsTab[i,pass].Remove(0,profilsTab[i,pass].Length);
    this.profilsTab[i,reverse].Remove(0,profilsTab[i,reverse].Length);
    this.profilsTab[i,destination].Remove(0,profilsTab[i,destination].Length);
    Par avance Merci !

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    euh çà existe des ArrayList multidimensionnel ??? Tu es sûr de parler de ArrayList
    Pour moi il est unidimensionnel mais peut contenir n'importe quel type d'objet, donc par exemple un Type Profil contenant tes 8 champs (serveur, serveur_type, chemin, profil_type, login, pass, reverse, destination)
    Ensuite RemoveAt devrait suffire
    Si tu es sous 2.0, je te suggère les collections génériques
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Oups oui tu as raison je me suis trompé avec autre chose

    En fait c'est un tableau string avec n lignes et 8 colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private string[,] profilsTab;
    profilsTab = new string[nbProfils,8];
    C'est possible de supprimer des lignes dans ce tableau ?

    Je suis sous 1.1

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Mais pourquoi tu n'utilises pas plutôt ma piste avec ArrayList
    tu te crées une classe Profil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    public class Profil
    {
       #region constructeurs
        public Profil(string server, string servertype, string path, string
     profiltype, string login, string pass, string reverse, string destination)
        {
           this.myserver = server;
           this.myservertype = servertype;
           this.mypath = path;
           this.myprofiltype = profiltype;
           this.mylogin = login;
           this.mypass = pass;
           this.myreverse = reverse;
           this.mydestination = destination;
        }
        // ...etc...
       #endregion
     
       #region accesseurs publics
        //mettre les accesseurs set si necessaire
        public string Serveur
        { get{ return this.myserver;}}
        public string ServeurType
        { get{ return this.myservertype;}}
        public string Chemin
        { get{ return this.mypath;}}
        public string ProfilType
        { get{ return this.myprofiltype;}}
        public string Login
        { get{ return this.mylogin;}}
        public string Pass
        { get{ return this.pass;}}
        public string Reverse
        { get{ return this.myreverse;}}
        public string Destination
        { get{ return this.mydestination;}}
     
       #endregion
     
       // tu peux également surcharger la méthode ToString() par exemple
     
       #region champs privés
        private string myserver;
        private string myservertype;
        private string mypath;
        private string myprofiltype;
        private string mylogin;
        private string mypass;
        private string myreverse;
        private string mydestination;
       #endregion
    }
    Maintenant tu peux directement les collectionner dans un ArrayList, le must serait de devlopper ta propre collection ProfilsCollection dérivée de CollectionBase afin d'obtenir directement les items caster en Profil
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci neguib,

    J'était justement en train de tester en passant par une classe ; j'ai fait une classe juste avec un constructeur je ne devrai pas avoir besoin de méthodes normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class profil
    {
        public string serveur, serveur_type, chemin, profil_type, login, pass,
     reverse, destination ;
     
        public profil(string serveur, string serveur_type, string chemin, string
     profil_type, string login, string pass, string reverse, string destination)
        {
            this.serveur = serveur;
            this.serveur_type = serveur_type;
            this.chemin = chemin;
            this.profil_type = profil_type;
            this.login = login;
            this.pass = pass;
            this.reverse = reverse;
            this.destination = destination;
        }
    }
    Ensuite j'ai essayé d'ajouter un profil (les valeurs sont récupérées dans un fichier xml) dans l'ArrayList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private ArrayList profilsTab;
    profilsTab = new ArrayList();
    profil profil = new profil(element[i].SelectSingleNode
    ("serveur").InnerText.ToString(),
        element[i].SelectSingleNode("serveur_type").InnerText.ToString(),
        element[i].SelectSingleNode("chemin").InnerText.ToString(),
        element[i].SelectSingleNode("profil_type").InnerText.ToString(),
        element[i].SelectSingleNode("login").InnerText.ToString(),
        element[i].SelectSingleNode("pass").InnerText.ToString(),
        element[i].SelectSingleNode("reverse").InnerText.ToString(),
        element[i].SelectSingleNode("destination").InnerText.ToString());
    profilsTab.Add(profil);
    Comment faire maintenant pour accéder aux propriétés ??
    J'avais pensé par exemple à :
    Mais c'est pas bon

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben oui je te l'ai dit un ArrayList contient des objets donc il faut transtyper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string leserveur = ((profil) profilsTab[0]).serveur;
    Bon comme tu as choisi de faire une classe et non une structure, il serait préférable de mettre tes champs en private et d'implémenter les accesseurs que je t'ai montré
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Voilà j'ai suivi tous tes conseils

    La classe profil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    public class profil
    {
        // champs privés
        private string serveur, serveur_type, chemin, profil_type, login, pass,
     reverse, destination ;
     
        // constructeur
        public profil(string serveur, string serveur_type, string chemin, string
     profil_type, string login, string pass, string reverse, string destination)
        {
            this.serveur = serveur;
            this.serveur_type = serveur_type;
            this.chemin = chemin;
            this.profil_type = profil_type;
            this.login = login;
            this.pass = pass;
            this.reverse = reverse;
            this.destination = destination;
        }
     
        // accesseurs public
        public string getServeur()
        { return this.serveur;}
     
        public string getServeur_type()
        { return this.serveur_type;}
     
        public string getChemin()
        { return this.chemin;}
     
        public string getProfil_type()
        { return this.profil_type;}
     
        public string getPass()
        { return this.pass;}
     
        public string getLogin()
        { return this.login;}
     
        public string getReverse()
        { return this.reverse;}
     
        public string getDestination()
        { return this.destination;}
    }
    Code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // creation de l'ArrayList
    private ArrayList profilsTab;
    profilsTab = new ArrayList();
     
    // création d'un profil
    profil monProfil = new profil
    ("serveur1","type1","adresse11","nettracker","mylog21","pass55",
    "172.15.20.36","C:/myRep/");
     
    // ajout du profil dans l'ArrayList
    profilsTab.Add(profil)
     
    //affichage du serveur du profil
    string leserveur = ((profil) profilsTab[0]).getServeur;
    Voilà et moi je fais un :
    Console.WrileLine("Merci beaucoup neguib pour ta patience et tes explication ;-) ");
    ...

    J'oubliais ! C'était quand même l'objet de la discussion ... Supprimer un élément d'une ArrayList maintenant que le reste est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    profilsTab.Remove(profilsTab[0]);

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben voilà, bon j'avais tout de même préférer l'implémentation de vrais accesseurs et non de méthodes Du moment que çà te convient
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison des éléments d'une ArrayList
    Par Emilie MARQUOIS-OGEZ dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 31/10/2006, 15h17
  2. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08
  3. [Collections]Supprimer des doublons dans une ArrayList
    Par emie31 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2005, 15h15
  4. Supprimer des éléments dans une TreeView ?
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/09/2005, 12h20
  5. Réponses: 14
    Dernier message: 15/01/2004, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo