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

VB.NET Discussion :

Supprimer une ligne d'un HashTable dans un For Each


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut Supprimer une ligne d'un HashTable dans un For Each
    Bonjour,

    Voilà j'aimerais pouvoir supprimer une ligne de mon Hashtable quand la date est celle qui correspond à la plus ancienne.
    Mais j'ai un message d'erreur dès le second passage, car il n'apprécie pas la modification.

    Mon code:

    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
    Dim laDate As String = Nothing
     
                                For Each soins As DictionaryEntry In dateHashtable
     
                                    laDate = dateDeSoin
     
                                    If Not dateMajoration = elemt.Key Then
     
                                        For Each dates As DictionaryEntry In dateHashtable
     
                                            If (CType(dates.Key, Date)) < (CType(laDate, Date)) Then
     
                                                laDate = dates.Key
                                                dateMajoration = laDate
     
                                                dateHashtable.Remove(dates.Key)
     
                                            End If
     
                                        Next
     
                                    End If
     
                                Next
    EDIT:

    Le message d'erreur:

    La collection a été modifiée; l'opération d’énumération peut ne pas s'exécuter!
    Merci!
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  2. #2
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour

    Tout est dit dans l'erreur ^^ Tu modifies la liste que tu parcours, ça lui plait pas.
    J'ai déjà eu besoin de travailler sur des listes, supprimer des éléments dans une liste en la parcourant.
    La solution facile c'est un for i = dataHashtable.count-1 to 0 step -1.
    Mais je sais qu'il existe des méthodes pour supprimer directement des éléments à partir de leur index ou de leurs valeurs, mais je ne les ai pas en tête.

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Uranne-jimmy Voir le message
    Bonjour

    Tout est dit dans l'erreur ^^ Tu modifies la liste que tu parcours, ça lui plait pas.
    J'ai déjà eu besoin de travailler sur des listes, supprimer des éléments dans une liste en la parcourant.
    La solution facile c'est un for i = dataHashtable.length-1 to 0 step -1.
    Mais je sais qu'il existe des méthodes pour supprimer directement des éléments à partir de leur index ou de leurs valeurs, mais je ne les ai pas en tête.
    J'avais compris qu'il n'aimait pas la modification lors du parcours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i = dataHashtable.length-1 to 0 step -1
    Length n'est pas un membre du Hashtable donc sa ne peut pas fonctionner.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  4. #4
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    J'ai édité trop tard ^^
    Un passage sur le msdn m'a permis de corriger : datahashtable.count-1.

  5. #5
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Uranne-jimmy Voir le message
    J'ai édité trop tard ^^
    Un passage sur le msdn m'a permis de corriger : datahashtable.count-1.
    Mais cela ne me permet pas de supprimer un élément du HashTable?
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  6. #6
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Je n'utilise pas cette collection en particulier, excuse moi ^^
    Il n'y a pas d'index donc on ne peux pas faire comme ça, on doit faire autrement, mais dans tout les cas, un for each n'est pas la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If (CType(dates.Key, Date)) < (CType(laDate, Date)) Then
     
                                                laDate = dates.Key
                                                dateMajoration = laDate
     
                                                dateHashtable.Remove(dates.Key)
     
                                            End If
    ... J'ai beau chercher, dans ce cas la solution serait d'enregistrer les dates.key dans une liste, et une fois le for each terminé, de supprimer toutes les clés de la liste :
    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
     
    dim cle_A_Suppr as new list(of date)
                                        For Each dates As DictionaryEntry In dateHashtable
     
                                            If (CType(dates.Key, Date)) < (CType(laDate, Date)) Then
     
                                                laDate = dates.Key
                                                dateMajoration = laDate
     
                                                cle_A_Suppr.add(dates.key)
                                            End If
     
                                        Next
    for each cle in cle_A_Suppr
    dateHashtable.Remove(cle)
    next
    Je n'ai pas testé, et je n'ai pas fait le code en option strict on, mais j'espère que ça marche ^^'

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

Discussions similaires

  1. [Débutant] supprimer une ligne de ma base dans une application web MVC 2
    Par hamzovic dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 15/04/2012, 04h16
  2. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 14h45
  3. [MySQL] Supprimer une ligne afficher dans une base de donnée
    Par julienchpt dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 14/10/2005, 15h45
  4. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 16h03
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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