Gtk textbuffer
Résolu/Fermé
mazareth
Messages postés
271
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
5 mars 2019
-
27 mai 2009 à 21:04
mazareth Messages postés 271 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 5 mars 2019 - 28 mai 2009 à 18:45
mazareth Messages postés 271 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 5 mars 2019 - 28 mai 2009 à 18:45
A voir également:
- Gtk textbuffer
- GTK Selfimage - Télécharger - Divers Utilitaires
6 réponses
mamiemando
Messages postés
33390
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 803
27 mai 2009 à 23:58
27 mai 2009 à 23:58
http://lists.ximian.com/pipermail/glade-users/2005-May/002493.html
http://forum.gtk-fr.org/viewtopic.php?id=4077
Bonne chance
http://forum.gtk-fr.org/viewtopic.php?id=4077
Bonne chance
Je ne me souviens plus de la fonction gtk_text_view_new_with_buffer (peut-être jadis n'existait-elle pas?), mais on voit tout de suite que ça ne tient pas la route.
A la fonction gtk_text_view_new_with_buffer, tu lui passes un pointeur initialisé à NULL (donc l'adresse du buffer est '0'), il y a alors 2 solutions:
- soit la fonction utilise cette adresse et c'est le plantage assuré,
- soit la fonction alloue elle-même de la mémoire et alors il y a 2 solutions:
----- soit la fonction demande l'adresse du pointeur (et non l'adresse pointée par celui-ci),
----- soit la fonction retourne un pointeur qu'il faudra sans doute récupérer (ne serait-ce que pour pouvoir le libérer).
Alors renseigne-toi sur cette fonction et je te souhaite une bonne continuation.
GtkTextBuffer *txtbuf=NULL; NumeroLigne = gtk_text_view_new_with_buffer(txtbuf);En lisant ces 2 lignes, on voit poindre immédiatement le 'segment fault' !
A la fonction gtk_text_view_new_with_buffer, tu lui passes un pointeur initialisé à NULL (donc l'adresse du buffer est '0'), il y a alors 2 solutions:
- soit la fonction utilise cette adresse et c'est le plantage assuré,
- soit la fonction alloue elle-même de la mémoire et alors il y a 2 solutions:
----- soit la fonction demande l'adresse du pointeur (et non l'adresse pointée par celui-ci),
----- soit la fonction retourne un pointeur qu'il faudra sans doute récupérer (ne serait-ce que pour pouvoir le libérer).
Alors renseigne-toi sur cette fonction et je te souhaite une bonne continuation.
mazareth
Messages postés
271
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
5 mars 2019
28
28 mai 2009 à 15:39
28 mai 2009 à 15:39
merci.
je pensai que ca initialisai simplement mon pointeur mais il est vrai que ca parrait bizar.
merci pour le lien 1 qui m'explique clairement mon erreur.
d'après Deletes current contents of buffer, and inserts text instead. If len is -1, text must be nul-terminated. text must be valid UTF-8.
il parle du '\0' terminal??
jvai essayer tous ca merci pour vos reponse.
je pensai que ca initialisai simplement mon pointeur mais il est vrai que ca parrait bizar.
merci pour le lien 1 qui m'explique clairement mon erreur.
d'après Deletes current contents of buffer, and inserts text instead. If len is -1, text must be nul-terminated. text must be valid UTF-8.
il parle du '\0' terminal??
jvai essayer tous ca merci pour vos reponse.
mamiemando
Messages postés
33390
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 novembre 2024
7 803
28 mai 2009 à 15:42
28 mai 2009 à 15:42
Oui null terminated, ça veut dire qu'il faut un \0 en fin de chaîne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mazareth
Messages postés
271
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
5 mars 2019
28
28 mai 2009 à 16:58
28 mai 2009 à 16:58
ben tien en parlant de ca
Code
void EcrireDansTextView(GtkWidget *TextView, gchar *text)
{
GtkTextBuffer *txtbuf;
txtbuf =gtk_text_view_get_buffer( GTK_TEXT_VIEW(TextView));
gtk_text_buffer_set_text (txtbuf,text,-1);
gtk_text_view_set_buffer(GTK_TEXT_VIEW (TextView),txtbuf);
gtk_widget_show (TextView);
}
void AfficheNumeroLigne(GtkWidget *TextView, gint NbreDeLigne)
{
int i,j;
char temp[4];
char text[NbreDeLigne*5+1];
for(i=0;i<NbreDeLigne;i++)
{
// temp=itoa (i, NULL, 10);
for(j=0;j<4;j++)
{
text[5*i+j]=temp[j];
text[5*i+4]='\n';
}
}
text[0]="1";
text[NbreDeLigne*5+1]= '\O';
printf(" text = %s",text);
EcrireDansTextView(TextView,&text[0]);
}
erreur : Deja je peut ecrire se que je veut avec ma premiere fonction avec la deuxieme quand je met le '\0' terminale j'ai le warning
callbacks.c:39:25: attention : séquence d'échappement « \O » inconnue
et rien ne s'affiche dans mon widget.
je ne comprend plus rien la.
sinon comment ca se fait que mes printf ne marche pas??? ces du a l'interface graĥique qui tourne je trouve ca bizar etant donner que c'est 2 entités differentes.
Code
void EcrireDansTextView(GtkWidget *TextView, gchar *text)
{
GtkTextBuffer *txtbuf;
txtbuf =gtk_text_view_get_buffer( GTK_TEXT_VIEW(TextView));
gtk_text_buffer_set_text (txtbuf,text,-1);
gtk_text_view_set_buffer(GTK_TEXT_VIEW (TextView),txtbuf);
gtk_widget_show (TextView);
}
void AfficheNumeroLigne(GtkWidget *TextView, gint NbreDeLigne)
{
int i,j;
char temp[4];
char text[NbreDeLigne*5+1];
for(i=0;i<NbreDeLigne;i++)
{
// temp=itoa (i, NULL, 10);
for(j=0;j<4;j++)
{
text[5*i+j]=temp[j];
text[5*i+4]='\n';
}
}
text[0]="1";
text[NbreDeLigne*5+1]= '\O';
printf(" text = %s",text);
EcrireDansTextView(TextView,&text[0]);
}
erreur : Deja je peut ecrire se que je veut avec ma premiere fonction avec la deuxieme quand je met le '\0' terminale j'ai le warning
callbacks.c:39:25: attention : séquence d'échappement « \O » inconnue
et rien ne s'affiche dans mon widget.
je ne comprend plus rien la.
sinon comment ca se fait que mes printf ne marche pas??? ces du a l'interface graĥique qui tourne je trouve ca bizar etant donner que c'est 2 entités differentes.
mazareth
Messages postés
271
Date d'inscription
mardi 25 décembre 2007
Statut
Membre
Dernière intervention
5 mars 2019
28
28 mai 2009 à 18:45
28 mai 2009 à 18:45
oui je sais mais il ne le reconnaissait pas.
le probleme venais de sprintf (temp, "%d",i); qui me mettais un '\0' lui aussi.
void AfficheNumeroLigne(GtkWidget *TextView, gint NbreDeLigne)
{
int i,j,cmpt;
char temp[4];
char text[NbreDeLigne*5+1];
for(i=1;i<=NbreDeLigne;i++)
{
sprintf (temp, "%d",i);
if(i<10) j = 1;
if(i>=10) j = 2;
if(i>=100) j = 3;
if(i>=1000) j = 4;
for(cmpt=0;cmpt<j;cmpt++)
{
text[5*(i-1)+cmpt]=temp[cmpt];
}
for(cmpt=j;cmpt<4;cmpt++)
{
text[5*(i-1)+cmpt]=' ';
}
text[5*(i-1)+4]='\n';
}
text[5*NbreDeLigne]='\0';
EcrireDansTextView(TextView,text);
}
ca marche maintenant je me heurte a un probleme enorme.
si quelqu'un peut m'aider!!
http://www.commentcamarche.net/forum/affich 12640196 makefile?#dernier
le probleme venais de sprintf (temp, "%d",i); qui me mettais un '\0' lui aussi.
void AfficheNumeroLigne(GtkWidget *TextView, gint NbreDeLigne)
{
int i,j,cmpt;
char temp[4];
char text[NbreDeLigne*5+1];
for(i=1;i<=NbreDeLigne;i++)
{
sprintf (temp, "%d",i);
if(i<10) j = 1;
if(i>=10) j = 2;
if(i>=100) j = 3;
if(i>=1000) j = 4;
for(cmpt=0;cmpt<j;cmpt++)
{
text[5*(i-1)+cmpt]=temp[cmpt];
}
for(cmpt=j;cmpt<4;cmpt++)
{
text[5*(i-1)+cmpt]=' ';
}
text[5*(i-1)+4]='\n';
}
text[5*NbreDeLigne]='\0';
EcrireDansTextView(TextView,text);
}
ca marche maintenant je me heurte a un probleme enorme.
si quelqu'un peut m'aider!!
http://www.commentcamarche.net/forum/affich 12640196 makefile?#dernier