Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1292 connectés 

  FORUM HardWare.fr
  Programmation
  C

  GTK - Caractères bizares

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

GTK - Caractères bizares

n°1788630
strike52
Posté le 18-09-2008 à 14:14:54  profilanswer
 

Bonjour,  
 
J'ai commencé GTK il n'y a pas longtemps, et je suis actuellement bloqué sur un problème de caractères bizzares.
Dans une fénêtre, je demande à l'utilisateur de rentrer une chaîne de caractère (d'une taille max que je définis), j'utilise un signal pour récupérer cette chaîne lorsque ce dernier tape sur "Enter".
Je récupére la chaîne de caractères dans la fonction callback avec :
chaine=gtk_entry_get_text(GTK_ENTRY(pEntry));
(sachant que chaine a bien été définie, malloc etc, et les cast sont ok).
Le problème : quand la chaîne de l'utilisateur est strictement inférieure à la taille max (ce qui arrive tout le temps...), je retrouve dans ma chaîne, des caractères bizarres (des carrés, des @, ...).  
 
Ex : je rentre "coucou" dans la fenêtre, je fais "Enter", et je récupère comme chaîne coucou @? Ї?h??M??  
 
Je me doute que cela vient du fait que il peut y avoir n'importe quoi comme caractères après le coucou parce que ya pas eu d'initialisation, mais comment est-ce qu'on peut initialiser en mettant des espaces dans toutes les cases, gtk_entry_get_text(GTK_ENTRY(pEntry)) ???
 
Merci pour votre aide

mood
Publicité
Posté le 18-09-2008 à 14:14:54  profilanswer
 

n°1788632
Joel F
Real men use unique_ptr
Posté le 18-09-2008 à 14:15:47  profilanswer
 

t'as bien un '\0' à la fin de ta chaine ?

n°1788642
strike52
Posté le 18-09-2008 à 14:29:24  profilanswer
 

Oui, quand j'ai initialisé chaine en mettant des espaces partout, j'ai mis un '\0' dans la dernière case.  
Et une fois que je récupére la chaine, ce sont toutes les cases qui viennent après "coucou" jusqu'à la dernière qui sont polluées.

n°1788657
Joel F
Real men use unique_ptr
Posté le 18-09-2008 à 15:02:19  profilanswer
 

tu récupéres comment ta chaine ?

n°1788662
strike52
Posté le 18-09-2008 à 15:13:43  profilanswer
 

chaine = (char*) gtk_entry_get_text(GTK_ENTRY(pEntry));
 
avec pEntry un argument de ma fonction Callback (un GtkWidget *).
 
A noter que pour l'instant, la seule solution que j'ai trouvé, c'est de compléter par des espaces mes chaines lors des saisies pour atteindre la taille max.

n°1788680
Joel F
Real men use unique_ptr
Posté le 18-09-2008 à 15:38:05  profilanswer
 

bon GTK me dit :
 

Citation :


Returns :
 a pointer to the contents of the widget as a string. This string points to internally allocated storage in the widget and must not be freed, modified or stored.  


 
Donc moi je ferais un strcpy au lieu d'un cast moche en char* :o

n°1788700
djobidjoba
Posté le 18-09-2008 à 15:51:23  profilanswer
 

salut, il est marque ceci dans leur doc au sujet de gtk_entry_get_text :
 
http://library.gnome.org/devel/gtk [...] y-get-text
"This string points to internally allocated storage in the widget and must not be freed, modified or stored. "
 
Après, je vois une fonction gtk_entry_get_text_length (), du coups est-ce qu'un  
 

Code :
  1. gchar *mon_texte, *ret;
  2. uint longueur=0;
  3. ret=gtk_entry_get_text(GTK_ENTRY(pEntry));
  4. if (ret!=NULL)
  5. {
  6.   longeur=gtk_entry_get_text_length (pEntry);
  7.   if ((mon_texte=malloc(longueur*sizeof(gchar)))!=NULL)
  8.   {
  9.     memclr(mon_texte,longueur);
  10.     memcpy(mon_texte,ret,longueur);
  11.   }
  12.   else
  13.   {
  14.    //erreur malloc
  15.   }
  16. }
  17. else
  18. {
  19.   //saisie vide
  20. }


n°1788703
strike52
Posté le 18-09-2008 à 15:52:09  profilanswer
 

incredible !
ce cast était si mal propre que ça !?
Merci :)

n°1788705
strike52
Posté le 18-09-2008 à 15:53:17  profilanswer
 

le strcpy de Joel semble résoudre définitivement le pb

n°1788777
Taz
bisounours-codeur
Posté le 18-09-2008 à 17:47:09  profilanswer
 

sinon tu fais un simple g_strdup et voilà ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  GTK - Caractères bizares

 

Sujets relatifs
affichage des caractères en j2meModification des caractères en j2me
Chaîne de caractères et ...lire la suiteIntégrer Flash/AS3 dans C/GTK+
transformer caractères ISO/Unicode en caractères normauxPHP Regex date + tel + caracteres
caractères bizarres si accents, cedilles, ...remplacer des caracteres
chaine de caractères javascriptProblème d'initialisation d'un tableau de caractères
Plus de sujets relatifs à : GTK - Caractères bizares


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR