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

GTK+ avec C & C++ Discussion :

GList ayant toujours la même valeur


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 879
    Par défaut GList ayant toujours la même valeur
    Bonjour

    Voici mon problème.
    Je lis un fichier ligne par ligne et je récupère ces lignes pour les stocker dans une GList (liste chaînée de la glib) et les placer dans un GtkComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    GList *list=NULL;
    char tmp[16];
    //Bla bla
    while(fgets(tmp, 16, file)) {
    		rom = g_locale_to_utf8(tmp, strlen(tmp)-1, NULL, NULL, NULL);
                    list = g_list_append(list, rom);
    		gtk_combo_box_append_text(GTK_COMBO_BOX(combo), rom);
    	}
    Ce qui est surprenant c'est que la ComboBox est correct avec le nombre attendu d'éléments ainsi que leur nom. Mais la GList contient aussi le nombre d'éléments attendus mais ne contient que la première ligne du texte. Si mon fichier était :
    ma liste contient 3 fois toto
    A quoi est dû cette bizarrerie ?

    Merci de vos réponses !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: [GTK] GList ayant toujours la même valeur
    Citation Envoyé par GLDavid
    e par ligne et je récupère ces lignes pour les stocker dans une GList (liste chaînée de la glib) et les placer dans un GtkComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    GList *list=NULL;
    char tmp[16];
    //Bla bla
    while(fgets(tmp, 16, file)) {
    		rom = g_locale_to_utf8(tmp, strlen(tmp)-1, NULL, NULL, NULL);
                    list = g_list_append(list, rom);
    		gtk_combo_box_append_text(GTK_COMBO_BOX(combo), rom);
    	}
    Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée, ce qui est contre les principes de bases de l'utilisation des listes chainées. Dans la boucle, je verrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       if (list == NULL)
       {
          list = g_list_append (list, rom);
       }
       else
       {
          (void) g_list_append (list, rom);
       }

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut Re: [GTK] GList ayant toujours la même valeur
    Citation Envoyé par Emmanuel Delahaye
    Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée
    list n'est pas le pointeur de tête mais un pointeur sur un élément de la liste (dans ce cas, celui après lequel il faut insérer le nouveau maillon), le pointeur sur la tête doit rester une donnée privée (l'utilisateur n'a pas à y toucher).

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 879
    Par défaut Re: [GTK] GList ayant toujours la même valeur
    Citation Envoyé par gege2061
    Citation Envoyé par Emmanuel Delahaye
    Je ne connais pas GTK, mais si tu modifie 'list' à chaque fois, ça signifie que la tete de liste est modifiée
    list n'est pas le pointeur de tête mais un pointeur sur un élément de la liste (dans ce cas, celui après lequel il faut insérer le nouveau maillon), le pointeur sur la tête doit rester une donnée privée (l'utilisateur n'a pas à y toucher).
    Et donc, quelle serait la solution à mon problème ?
    Merci pour vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 879
    Par défaut
    Ok, j'ai résolu mon problème en introduisant un nouveau type GSList (liste simplement chaînée de la GLib). Apparemment, ça vient du fait que j'étais basé sur mes connaissances de Gtk 1.3 alors qu'on est maintenant sur Gtk 2.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    GSList *list = NULL;
    while(fgets(tmp, 16, file)) {
    		rom = g_locale_to_utf8(tmp, strlen(tmp)-1, NULL, NULL, NULL);
    		list = g_slist_append (list, rom); 
    		gtk_combo_box_append_text(GTK_COMBO_BOX(combo), rom);
    	}
    Avec ça, plus de soucis, tous mes éléments y sont.
    Merci de votre aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2006, 12h19
  2. [excel]Valeur d'une case ayant une formule
    Par snooopy007 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/07/2006, 17h57
  3. Fonction ne retournant pas toujours une valeur
    Par mastochard dans le forum C
    Réponses: 14
    Dernier message: 25/05/2006, 12h13
  4. recuperer la valeur d'une cellule ayant le focus
    Par stefano dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/03/2006, 20h07
  5. [Excel] Affichage d'une cellule ayant pour valeur 0
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2006, 10h38

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