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 :

Récupération et réutilisation de valeurs GTK Entry


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Par défaut Récupération et réutilisation de valeurs GTK Entry
    Bonjour à tous,
    J'ai un problème pour récupérer des valeurs avec GTK.
    Lorsque je valide un champ pEntry => Je fait appel à une fonction (cb_save_valeur) qui est censée me modifier la variable passée en paramètre en y mettant la valeur entrée dans un GTK_Entry. J'arrive à modifier la variable dans ma fonction mais je n'arrive pas à retourner cette modification pour pouvoir l'utiliser plus loin dans ma fonction principale.

    En fait dans mon main j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const gchar *port_envoi="2000";	//définition de port_envoi
     
    	...
    /*appel de la fonction qui est censé me modifier ''port_envoi'' lors de la validation du champ pEntry */
        g_signal_connect(G_OBJECT(pEntry), "activate", G_CALLBACK(cb_save_valeur),(gchar*) port_envoi);
    qui appelle ma fonction qui est définie ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void cb_save_valeur(GtkWidget *pEntry,const gchar *sText)
    {
    	const gchar *valeur;
        	valeur = gtk_entry_get_text(GTK_ENTRY(pEntry)); // Recuperation du texte contenu dans le GtkEntry
       	sText=valeur;
    	printf("(Avant la sortie de la fonction) la valeur de %s est: %s \n",sText,valeur);
    }
    Je pense que j'ai mal fait cette fonction cb_save_valeur.
    Avant l'appel de la fonction j'ai port_envoi qui est égal à 2000.
    Si je rentre par exemple 3000 dans le champ pEntry je vais bien avoir sText qui va prendre la valeur 3000 avec la ligne sText=valeur;
    Par contre, lorsque je réutilise ma variable ''port_envoi'' plus loin dans le programme en paramètre d'une autre fonction, ma variable est encore à 2000.
    (donc comment faut-il faire pour modifier ma variable port_envoi à partir d'une fonction séparée, de manière à y mettre la valeur d'un GTK_Entry ? )
    J'ai essayé en ajoutant un « return sText; » à la fin de ma fonction cb_save_valeur mais ça n'a pas suffit.

    Voilà. Je suis un peu déstabilisé par le fait que c'est plus vraiment de la programmation séquentielle et je suis pas certains d'avoir bien compris tous les rouages de GTK.

    Merci d'avance si vous avez des pistes pour que je puisse chercher d'où vient mon problème.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Salut, je me rappelle lors de nos premiers TP de C en cours, les profs nous avaient fait le même coup.

    On essayait de modifier une variable et LOCALEMENT, ça marchait bien mais dès qu'on sortait de la sous-fonction, paf ça avait disparu.

    La solution comme ils nous l'ont répété 100 fois est d'utiliser un POINTEUR sur cette dite variable afin de ne pas modifier "une copie" mais bel et bien l'originale.

    Dans ton programme, il semble que tu lui passe juste en paramètre une chaine de caractère : Et non un pointeur sur cette chaîne.

    Essaye d'utiliser le cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (gpointer*) port_envoi);
    plutot mais je ne suis pas sur je suis sous windows, je ne peux pas tester lol.

    Enfin en tout cas, je suis sur que le problème vient de là : tu travailles sur une copie de ta chaîne qui n'existe que dans la fonction cb_save_valeur.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2007, 08h31
  2. Réutiliser la valeur selectionnee d'une liste
    Par slim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/05/2007, 12h29
  3. desactiver gtk entry
    Par gy0m76 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 12/02/2007, 11h26
  4. comment mettre gtk entry, gtk spin inconsistants ?
    Par echantillon dans le forum GTK+
    Réponses: 3
    Dernier message: 13/01/2007, 11h14
  5. Récupération de couple de valeur
    Par Premium dans le forum C
    Réponses: 24
    Dernier message: 31/05/2006, 18h33

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