gtk struct

Модератор: Модераторы разделов

alfss
Сообщения: 262

gtk struct

Сообщение alfss »

struct exec_s{
GtkWidget *login,*password,*recipients,*local_part,*type,*domain;
char *conninfo;
};
conninfo[200];

send->login=login;
send->domain=domain;
send->password=password;
send->conninfo=conninfo;
g_print("%s\n",send->conninfo);<-- тут все хорошо и все как надо и данные из него отображаются

g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (add),(gpointer)send);<- предаю структуру

add(GtkWidget *widget,struct exec_s *parm){

g_print("%s\n",parm->conninfo);<- все данные кроме conninfo в нормальном состоянии - а сам conninfo пуст 0_o
}

how?
Спасибо сказали:
alfss
Сообщения: 262

Re: gtk struct

Сообщение alfss »

вобшем хз что было -_- перезаписывало адрес
просто сделал в структуре массив а не ссылку
но все ровно непонятно <_<
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: gtk struct

Сообщение d_n_k »

Ну наверно ты передаешь указатель на переменную в стеке другой функции, а потом к ней обращаться когда функция уже отработала, те переменной уже давно нет.
удивительно как ты еще сегфалт не получил коли пишешь в таком стиле.


поменяв char* на char [...] ты копируешь память. те обращаешься не к переменной на стеке в другой функции.


зы: по приведенному когду абслютно ничего не понятно

зыы: надеюсь send укзывает куда-то в кучю, а не на стек
зыыы: не забывай вызывать функции g_object_ref когда присваеваешь указатель на виджет куда-нибудь и g_object_unref когда забиваешь на указатель, а то в какая-то функия посчитает что виджет уже не нужен и освободит его, а ты к нему обращаешься...
все сказанное есть имхо...
Спасибо сказали:
alfss
Сообщения: 262

Re: gtk struct

Сообщение alfss »

насчёт разрушения я думал - просто не верилось.
ибо если без g_signal то все путём шло))

насчёт
g_object_ref

Код:

----то есть если я хочу передать то должно выглядеть так??-- domain=gtk_entry_new(); g_object_ref(domain); -----------------------------------

насчет структуры>

Код:

struct exec_s *send; send=(struct exec_s *)malloc(sizeof(struct exec_s));



если вы считаете что я делаю где-то что-то не так - буду рад к критике и указания на примеры как надо.
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: gtk struct

Сообщение sergeyvp »

alfss писал(а):
28.08.2007 22:08
если вы считаете что я делаю где-то что-то не так - буду рад к критике и указания на примеры как надо.

Вобще было бы неплохо выкладывать не кусок кода, а пример готовый к компиляции с комментариями о возникшей проблеме,
чтобы люди не ломали голову откуда что у вас там взялось и куда должно привести.
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: gtk struct

Сообщение d_n_k »

Код: Выделить всё

domain=gtk_entry_new();
g_object_ref(domain);

нет так конечно. когда объект только создается у него счетчик ссылок = 1.
когда ты один указатель на объект присваиваешь другому тогда и надо делать

вот тут

Код: Выделить всё

send->login=login;
send->domain=domain;
send->password=password;


надо сделать обязательно.

например так

Код: Выделить всё

send->login=g_object_ref(login);
все сказанное есть имхо...
Спасибо сказали: