找回密码
 注册
查看: 1081|回复: 8

entry里内容的显示报错!

[复制链接]
发表于 2006-7-20 22:58:06 | 显示全部楼层 |阅读模式
我截取了我程序的部分语句来给大家看为什么我向entry里输出内容,编译没有错误,等到输入数据的时候却输不出来呢,而且有如下的提示.请大家帮忙看一下,指点我该如何修改我的程序?
[code:1]
.......

unsigned char *pFrame;
union                                                 //定义一个共用体
{
char ch[4];
short sh[4];
unsigned ush[4];
int i[4];
}show_pack;


show_pack.ch[0]=pFrame[3];
Double=show_pack.ch[0]/2.0;
asprintf(&c,"%-5.3f",Double);
gtk_entry_set_text(GTK_ENTRY(entry_gyro_prate),c);
.....
[/code:1]

(app:5361): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' i n cast to `GtkEntry'

(app:5361): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): as sertion `GTK_IS_ENTRY (entry)' failed

   多谢大家了!
发表于 2006-7-21 10:13:52 | 显示全部楼层
gtk_entry_set_text(GTK_ENTRY(entry_gyro_prate),c);

entry_gyro_prate不是一个合法的gtk_entry的指针。请检查关于entry_gyro_prate的代码。
回复

使用道具 举报

 楼主| 发表于 2006-7-21 10:34:08 | 显示全部楼层
是说我对entry的起名起的不对吗?
entry_gyro_prate这个名字起得不对?不是吧!
回复

使用道具 举报

发表于 2006-7-21 11:10:34 | 显示全部楼层
晕啊。不是名字问题,是这个变量的值不对!entry_gyro_prate不是一个合法的gtk_entry的指针。
回复

使用道具 举报

 楼主| 发表于 2006-7-21 11:48:50 | 显示全部楼层
我的意思是把源源不断从串口传来的数据经过解帧后,实时的显示在我的entry里(entry也有很多,至少有100个),就是通过如上的语句:
1)先解帧
show_pack.ch[0]=pFrame[3];
Double=show_pack.ch[0]/2.0;
2)再转化格式
asprintf(&c,"%-5.3f",Double);
3)显示
gtk_entry_set_text(GTK_ENTRY(entry_gyro_prate),c);

我通过一个测试验证了对一个数据的显示(没有变化)是没有问题的,现在我想问的是:是不是因为我的数据太多,每个entry它不能自动刷新而导致entry显示不出来且有错误?
这种情况应该怎么处理呢?
回复

使用道具 举报

发表于 2006-7-21 12:33:49 | 显示全部楼层
不是刷新的问题。set成功后就已经刷新了。
你还是不明白我的意思。给你一个最简单的调试方法。
如果你的GtkEntry建立后没有destory,那么你的entry_gyro_prate指针值应该是不变的,指向你建立的GtkEntry,你把这个值打印出来。然后每次你在gtk_entry_set_text(GTK_ENTRY(entry_gyro_prate),c); 之前把entry_gyro_prate打印出来,对比一下你就知道为什么(gtk_entry_set_text): as sertion `GTK_IS_ENTRY (entry)' failed
有些基础的东西要学好,要不然真的是沟通都有问题啊。
回复

使用道具 举报

 楼主| 发表于 2006-7-21 16:48:02 | 显示全部楼层
我自己做了一个小程序用你的方法对GtkEntry做了一下测试,果真发现那个值是不变的.
但是我的这个程序里的entry也应该是不变的才对啊,为什么会出现这个问题呢,我的entry是在face.c文件里创建的,并用extern声明为外部变量.在另外一个解码的函数里用到,为什么会有问题:
(app:5167): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GtkEntry'

(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

GLib-GObject-WARNING **: invalid uninstantiatable type `gint64' in cast to `GtkEntry'
(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

(app:5167): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkEntry'

(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

(app:5167): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkEntry'

(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed
段错误
      


而且我的界面上是没有数据显示
回复

使用道具 举报

 楼主| 发表于 2006-7-24 11:59:34 | 显示全部楼层
现在我在我的主函数里用了一个gtk_timeout_add()函数来调用我的解码函数(这个函数里还包含4个解帧函数并显示)时,现在可以显示我解码之后的数据,但是问题还是存在,
就是读完一帧数据并显示之后,在判断出下一帧要显示的时候就不可以显示了,终端上
还会显示如上的错误:

(app:5167): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkEntry'

(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

大家看看到底我应该怎么改,能不能解释的具体点呢?
回复

使用道具 举报

 楼主| 发表于 2006-8-1 11:04:13 | 显示全部楼层
到最后,我知道是哪个地方的问题了。就是自己的粗心造成的,定义了两个相同的entry,所以数据来了不知道要往哪里送了 :-(
唉,从来没有怀疑过我的仔细程度,每想到竟然是这里出问题了。
还是要非常感谢您的指点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-6 20:40 , Processed in 0.025593 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表