Voila le problème si l'utilisateur entre une mauvaise saisie, j'aimerai corriger le contenu de ma GtkEntry à la volée.
j'ai une fonction de contrôle qui est appelée via l'evenement "change" donc a chaque nouveau caractère entré.
exemple 1 qui marche :
Si il entre un nombre décimal avec une virgule au lieu d'un point elle es automatiquement templacée :
exemple 2 qui marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 gchar* saisie = (gchar*)gtk_entry_get_text(GTK_ENTRY(entry)); for(i = 0; saisie[i] != '\0'; i++) { if (saisie[i]== 44)// 44 = code ascii d'une virgule { saisie[i] = 46;//code ascii d'un point gtk_entry_set_text(GTK_ENTRY(entry), saisie); } }
Si il entre un espace et que je n'autorise que des chiffres, j'aimerais effacer le dernier caractère entré.
mais ce code provoque une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (saisie[i]== 32)// 32 = code ascii d'un espace { saisie[i] = 0;//code ascii du caractère NULL gtk_entry_set_text(GTK_ENTRY(entry), saisie); }
Je pense que c'est parce que le curseur se retrouve après le caractère de fin de chaine non? Comment faire pour supprimer le dernier caractère d'une chaine?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion `index >= 0 && index <= layout->length' failed
Quelle autre solution alors? j'ai pensé a sauvegardé a chaque fois la saisie dans une saisie temporaire à restituer en cas d'erreur mais ça ne marche pas non plus
Merci de votre aide.
Partager