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# 1.1] Comment utiliser l'indexation d'un ArrayList ? [Débutant(e)]


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut [C# 1.1] Comment utiliser l'indexation d'un ArrayList ?
    Salut ^^

    j'ai un petit problème avec des ArrayListe...
    En fait, je tente de faire un tableau de tableaux....

    je vous montre :

    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
    private void videArrayList(ref ArrayList laListe)
    {
    	for(int i = 0; i < laListe.Count; i++){
    		laListe.RemoveAt(i);
    	}
    }
     
    public void getParams(ref ArrayList listeParam){
    	ArrayList tmpParam = new ArrayList();
    	logs log = new logs();
     
    	for(int i = 0; i < this.countParams; i++){
    		tmpParam.Add(this.paramName[i]);
    		tmpParam.Add(this.paramValue[i]);
    		listeParam.Add(tmpParam);
     
    		this.videArrayList(ref tmpParam);
    	}
    }
    Mon problème ici semble être que quand je remplu listeParam avec tmpParam, il n'y envoi que le PREMIER element de la liste... OR, il y en a bien 2 ! (j'ai tenté d'ecrire tmpParam[0] et tmpParam[1] dans un fichier et ca a marché)
    Mais lorsque je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach(ArrayList urlParam in urlParams){
    	postDatas += (postDatas == "") ? urlParam[0]+"="+urlParam[1] : "&"+urlParam[0]+"="+urlParam[1] ;
    }
    dans la methode d'une autre classe où j'envoie la listeParam de tout a l'heure par valeur cette fois, et bien je recois une erreur d'index... (index out of range pour etre précis.)

    Sauriez vous m'aider ?
    Avez vous besoin de plus de précisions ?

    Merci d'avance !

  2. #2
    Membre du Club Avatar de Manralf
    Inscrit en
    Août 2005
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Salut

    utilise une Hashtable plutôt qu'une ArrayList, cette structure de données correspond parfaitement à ton besoin.

    NB : tmpParam.Clear(), c'est mieux que ton this.videArrayList(ref tmpParam) !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par Manralf
    Salut

    utilise une Hashtable plutôt qu'une ArrayList, cette structure de données correspond parfaitement à ton besoin.

    NB : tmpParam.Clear(), c'est mieux que ton this.videArrayList(ref tmpParam) !
    le Clear, j'ai eu des problemes avec, du coup j'ai refais une méthode bien a moi

    Euh... Si ca t'ennuie pas, tu peux rapidement me dire ce qu'est une HashTable ?
    Je viens a peine de découvrir les ArrayList donc bon

  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
    Heu il ne t'est pas interdit de consulter par toi même la doc n'est-ce pas
    Classe Hashtable
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    oui c'est vrai, merci !!

    Juste que je trouve qu'MSDN s'est "dégradé" depuis un certain temps :S
    (pourquoi ne pas l'avoir fait dans le meme style que le manuel php ?? fin bref... )

    En tout cas merci ^^

  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
    Citation Envoyé par Sion_Sempai
    oui c'est vrai, merci !!
    Juste que je trouve qu'MSDN s'est "dégradé" depuis un certain temps :S
    (pourquoi ne pas l'avoir fait dans le meme style que le manuel php ?? fin bref... )
    En tout cas merci ^^

    Il te manque simplement un peu de pratique car perso je trouve que c'est la doc la plus complète qui soit. Plus tu la pratiques, plus tu es familier avec son organisation. Et là je t'ai donné le lien en français, mais il existe aussi:
    http://msdn.microsoft.com/library/
    et pour le 2.0 spécifiquement
    http://msdn2.microsoft.com/library/default.aspx (encore en chantier mais déjà bien nanti)
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    c'est vrai que je l'ai pas utilisé beaucoup avec C# et la programmation .Net

    Je vais pratiquer et je redonnerai mon avis quand je serai plus expérimenté

    En attendant, bon débutant que je suis, existe-t-il une methode permettant d'effectuer une découpe d'une chaine de caractère selon une chaine de caractère ?
    Un peu comme Split, mais non pas avec un char[] mais un string ?

  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
    Là franchement je vois pas trop le souci d'utiliser la méthode String.ToCharArray
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string mesdecoupes = ",;.";
    string[] mondecoupage = machaine.Split(mesdecoupes.ToCharArray());
    maintenant si c'est un mot qui doit être le repère de découpage; il est préférable je crois de passer par les expressions régulières
    Espace de noms System.Text.RegularExpressions
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par neguib
    Là franchement je vois pas trop le souci d'utiliser la méthode String.ToCharArray
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string mesdecoupes = ",;.";
    string[] mondecoupage = machaine.Split(mesdecoupes.ToCharArray());
    maintenant si c'est un mot qui doit être le repère de découpage; il est préférable je crois de passer par les expressions régulières
    Espace de noms System.Text.RegularExpressions
    C'est un mot oui, et je suis effectivement passé par les expressions régulière
    Merci !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Re: [C# 1.1] Comment utiliser l'indexation d'un ArrayList ?
    Pour répondre à la question initiale , en fait ton problème vient du fait que tu n'as pas compris l'utilisation des classes.

    L'objet ArrayList est une classe, c'est donc par référence qu'il est pointé.

    Quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ArrayList tmpParam = new ArrayList();
     
    	for(int i = 0; i < this.countParams; i++){
    		tmpParam.Add(this.paramName[i]);
    		tmpParam.Add(this.paramValue[i]);
    		listeParam.Add(tmpParam);
     
    		this.videArrayList(ref tmpParam);
    	}
    c'est normal qu'il n'y ait qu'une valeur dans ta liste puisqu'il n'y a qu'une seule instantiation de tmpParam.

    Par contre lors de chaque passage dans le for, le listeParam.Add(tmpParam) ajoute à chaque fois la même référence !

    si tu veux obtenir plusieurs valeurs alors il te faudra écrire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    	for(int i = 0; i < this.countParams; i++){
                                    ArrayList tmpParam = new ArrayList();
    		tmpParam.Add(this.paramName[i]);
    		tmpParam.Add(this.paramValue[i]);
    		listeParam.Add(tmpParam);
     
    		this.videArrayList(ref tmpParam);
    	}

    J'espère avoir été le plus clair possible
    Citation Envoyé par Sion_Sempai
    Salut ^^

    j'ai un petit problème avec des ArrayListe...
    En fait, je tente de faire un tableau de tableaux....

    je vous montre :

    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
    private void videArrayList(ref ArrayList laListe)
    {
    	for(int i = 0; i < laListe.Count; i++){
    		laListe.RemoveAt(i);
    	}
    }
     
    public void getParams(ref ArrayList listeParam){
    	ArrayList tmpParam = new ArrayList();
    	logs log = new logs();
     
    	for(int i = 0; i < this.countParams; i++){
    		tmpParam.Add(this.paramName[i]);
    		tmpParam.Add(this.paramValue[i]);
    		listeParam.Add(tmpParam);
     
    		this.videArrayList(ref tmpParam);
    	}
    }
    Mon problème ici semble être que quand je remplu listeParam avec tmpParam, il n'y envoi que le PREMIER element de la liste... OR, il y en a bien 2 ! (j'ai tenté d'ecrire tmpParam[0] et tmpParam[1] dans un fichier et ca a marché)
    Mais lorsque je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach(ArrayList urlParam in urlParams){
    	postDatas += (postDatas == "") ? urlParam[0]+"="+urlParam[1] : "&"+urlParam[0]+"="+urlParam[1] ;
    }
    dans la methode d'une autre classe où j'envoie la listeParam de tout a l'heure par valeur cette fois, et bien je recois une erreur d'index... (index out of range pour etre précis.)

    Sauriez vous m'aider ?
    Avez vous besoin de plus de précisions ?

    Merci d'avance !

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

Discussions similaires

  1. comment utiliser : GET /index.hml HTTP/1.0 ?
    Par POKOU dans le forum Développement
    Réponses: 0
    Dernier message: 09/01/2012, 16h05
  2. Comment utiliser z-index?
    Par Boony dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/02/2009, 14h58
  3. Réponses: 9
    Dernier message: 28/05/2008, 02h06
  4. Réponses: 17
    Dernier message: 03/01/2008, 13h40
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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