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 :

Problème avec les GList


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut Problème avec les GList
    Bonjour à tous et à toutes

    Mon problème est le suivant : j'ai besoin de stocker des informations dans une GList mais celle-ci a décidé d'en faire qu'à sa tête
    En effet, lorsque j'insere un element, elle transforme toute la liste !!!!!!!

    L'élement que je veux insérer s'insere bien mais il modifie toutes les anciennes insertions (c'est qu'un exemple)

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            Liste_Sauvegarde = g_list_append(Liste_Sauvegarde, TRUE);
            Liste_Contenu = g_list_append(Liste_Contenu, (gchar *) Contenu);
            Liste_Chemin = g_list_append(Liste_Chemin, (gchar *) Emplacement);
            /* Remplissage de la GList */
     
            gpointer Truc;
            Truc = g_list_nth_data(Liste_Chemin, 0);
            printf("%s", Truc);
            /* On affiche l'élement de la GList */
    Contenu et Emplacement sont tous les deux des paramètres.
    Liste_Sauvegarde, Liste_Contenu, Liste_Chemin sont des statiques (je sais que c'est déconseillé bien que je ne sache pas pourquoi )
    Liste_Sauvegarde ne doit contenir que des booleans.
    Les paramètres ne sont pas corrompues : je les ai testé

    Et cette fonction marque sur la console tout ce qu'il ne faut pas : a chaque insertion elle modifie toute la liste en ce qu'elle est. Par exemple si la liste contient mouton et ane et qu'on ajoute boeuf, mouton et ane deviennent boeuf

    Ici, la liste qui me gène c'est Liste_Chemin. Les deux autres marchent parfaitement.
    Cette fonction est appelé à chaque fois par une autre fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Ajoute_liste(Chemin_fichier, Contenu_fichier);
            /* On ajoute un onglet */
    Je vous rassure ce n'est qu'une portion de la fonction. Le reste est inutile à mettre car les paramètres ne sont pas corrompu

    Merci d'avance de m'aider à resoudre ce problème

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Tu dois surement passer en paramètre à chaque fois le même pointeur donc s'il pointe sur une autre données forcément ca change les autres noeuds de la liste.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Franck a fort probablement raison.
    Tente d'utiliser g_strdup (contenu); au lieu de contenu comme 2nd argument.
    Par contre, lors de la libération de ta liste, tu devras utiliser g_list_foreach (liste, g_free, NULL); en plus du g_list_free.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut
    Merci je vais essayer cela tout de suite
    Je vous tien au courant

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Par défaut
    Alors cela marche très bien pour la liste_chemin !!! Merci à tous

    Par contre je ne vois pas comment faire pour la Liste_Sauvegarde

    J'ai remarqué qu'elle a beugé et que au bout de trois ajouts elle commence à m'ajouter des nombres exhorbitants (alors que ca ne doit pas dépasser 1 ou 0)

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

Discussions similaires

  1. Problème avec les GList
    Par Kicker dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 30/03/2008, 17h52
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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