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 :

Comment récupérer le contenu d'un tableau de structures ?


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Comment récupérer le contenu d'un tableau de structures ?
    Bonjour à tous et à toutes,

    J'ai ajouté dans un ArrayList des structures. Je peux y enregistrer des données mais je ne sais pas comment les récupérer. Je ne trouve rien à ce sujet sur le forum.
    Voice 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
    25
    26
    27
    28
    29
    30
    31
    32
     struct Aff 
            {
                public int TQteT0;
                public int TQteT1; 
                public int TQteT2; 
                public int TQteT3;
                public int somme;
            }
     
    ArrayList T_Tab = new ArrayList();  //tableau dynamique de stockage des structures
     
    ...
     
    for (int k = 0; k <= T_Aff.Length - 1; k++)
    {
            Aff vBuffAff = new Aff();
     
            if (T_Aff[0] == T_Aff[k]) 
            {
                   if (T_Tab.Count > 0)
                   {
                           int vtoto = T_Tab[i].TQteT0 //<-- je souhaite récupérer le contenu de TQteT0
                    } 
                    vBuffAff.TQteT0 = 1; 
             }
             else if (T_Aff[1] == T_Aff[k]) { vBuffAff.TQteT1 = 1; }
             else if (T_Aff[2] == T_Aff[k]) { vBuffAff.TQteT2 = 1; }
             else if (T_Aff[3] == T_Aff[k]) { vBuffAff.TQteT3 = 1; }
     
             vIndex = T_Tab.Add(vBuffAff);
     
    }
    Le programme ne compile pas et le message d'erreur est le suivant :
    Erreur 1 'object' ne contient pas de définition pour 'TQteT0'
    Si quelqu'un peut me dépanner, ça sera avec plaisir.

    D'avance merci
    Cordialement
    Alex01

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    ArrayList retourne un object qu'il faut que tu cast en Aff.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    Conseil :

    utiliser une List<> si tu peux (>= net 2.0), tu t'eviteras des casts dans tous les sens, et pleins de boxing (surtout ici avec des struct).

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse si rapide,

    Ok, ça fonctionne ! merci
    Mais est-il possible d'écrire le code en 1 ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Aff vtoto = (Aff)T_Tab[i];
    int titi = vtoto.TQteT0;
    Cordialement
    Alex01

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int titi = ((Aff)T_Tab[i]).TQteT0;

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int titi = ((Aff)T_Tab[i]).TQteT0;
    Super, ça fonctionne ! je m'étais trompé avec les parenthèses dans mes essais !!!!!!!!

    Merci Kaidan.


    SirJulio, je viens de parcourir ma documentation sur 'List', je n'ai malheureusement que peu d'infos. Si je comprend bien, 'List' peut remplacer un tableau dynamique : list.add() ?
    Peux tu me dire quels sont les avantages / inconvénient par rapport à un tableau dynamique (hormis la non utilisation de 'cast') ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Es tu en .net >= 2.0?

    Si oui, ce n'est pas List, mais List<> : dans System.Collections. Generics

    Tu peux faire une List<Aff> kList = new List<Aff>();
    Ce sont des listes génériques, donc fortement typées : donc impossible de faire : kList.Add( 3 );

    Et donc pas besoin de caster

    Bref, oubli les Collections simples, c'est plutôt chiant et sujet à trop de problèmes... Generics rulez

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Oui je suis en .net 2.0
    Je vais essayer de me documenter un peu mieux sur list<>

    Merci pour le conseil.

    Bonnes fêtes de fin d'année à tous ....

    Alex01

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    +1

    Mais quand tu es en .Net 1.1 tu t'amuses avec des dictionnaires de dictionnaires et des cast dans tous les sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int [] values = {0, 1, 2, 3, 4} 
     
    int [] keys = { 0, 1, 2, 3, 4}
     
    ListDictionnary dico = new ListDictionnary();
    foreach key in keys
    {
    dico.Add(key, new ListDictionnary());
    ((ListDictionnary)dico[key]).Add(key, values[key]);
    }
    int result = (int)((ListDictionnary)dico[key[0]])[values[2]] + (int)((ListDictionnary)dico[key[3]])[values[4]];
    Juste un exemple de code compliqué à lire pour des conneries
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/06/2011, 19h27
  2. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  3. [SQL] comment récupérer le contenu de cases à cocher
    Par Viau dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 31/01/2006, 14h56
  4. Comment récupérer la taille d'un tableau dynamique ?
    Par Tchaill39 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2005, 14h21
  5. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36

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