Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wxWidgets - Ошибка сигментации, wxTreeCtrl проблемы 
:(
    Опции темы
Stajor
Дата 19.12.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 11.7.2005

Репутация: нет
Всего: нет



Всем доброго времени суток.
Возникла проблема в работе с библиотекой wxWidgets при использовании wxTreeCtrl. Использую MinGwStudio2.05, wxWidgets2.5, ОС- Win2K.
Суть проблемы.
Программа предназначена для редактирования тестов некоторого девайса. В главном окне есть дочерние окна дерева и редактора тестов.
Иерархия дерева:
КОРЕНЬ (название проекта тестов)
ГРУППА (группа тестов, кол-во не ограниченно)
ПАРАГРАФ (параграф тестов, кол-во не ограничено)
...
Создаю дерево, наследуя от wxTreeCtrl, так же создаю структуру, в которой должны хрониться тесты во вложенных векторах(при первоначальном запуске программы в структуру записывается только информация о названии проекта тестов). В структуре для каждой ветви дерева сохраняю wxTreeItemId в соответстующих иерархии векторах, для связи элемента дерева со структурой.
По контекстному меню добавляю в дерево ветвь группы1, с сохранением группы1 в структуре тестов
Код

ts_temp_g->s_Group.id_tree = AppendItem(IdSelect, name, 2); // создание ветви группы1 
m_TS->s_Tests.v_Group.push_back(ts_temp_g->s_Group);    // запись группы1 в вектор структуры тестов    
OnView(ts_temp_p->s_s_Group.Id); // функция выделения добавленной ветви

где:
m_TS - указатель на структуру тестов;
IdSelect - wxTreeItemId корня дерева (запоминается в селекте при вызове контекстного меню);
ts_temp_g->s_Group.id_tree - запись wxTreeItemId во временной структуре создаваемой группы1;
После чего по контекстному меню группы добавляю параграф1 тестов в группу1
Код

if(m_TS->s_Tests.v_Group.size())
            for(int i = 0; i != (int)m_TS->s_Tests.v_Group.size(); i++)
                if(IdSelect == m_TS->s_Tests.v_Group[i].id_tree)
                {    
                    ts_temp_p->s_Paragraph.id_tree = AppendItem(IdSelect, name, 3); // создании ветви параграфа1
                    m_TS->s_Tests.v_Group[i].v_Paragr.push_back(ts_temp_p->s_Paragraph); // запись параграфа1 в вектор структуры тестов    
                    break;
                }
OnView(ts_temp_p->s_Paragraph.Id); // функция выделения добавленной ветви

IdSelect - wxTreeItemId группы1 (запоминается в селекте при вызове контекстного меню);
При добавлении группы1 и последующем добавлении в нее параграфов проблем никаких не возникает, и программа функционирует без каких либо сбоев.
При добавлении группы2 и последующем добавлении в нее параграфа вылетает ошибка сигментации при селекте добавленного параграфа в функции OnView(ts_temp_p->s_Paragraph.Id);
Код

void TreeBrows::OnView(int id_test)
{
    TestStruct::structParagraph* pr; // указатель на структуру параграфа
if((pr = m_TS->s_Tests.GetS_Paragr(id_test)) != NULL) // передача id_test в функцию поиска элемента структуры
        {
            id_item = pr->id_tree;
            this->SetItemText(id_item, pr->TestParagraph); // запись названия параграфа в дереве
            if(!this->IsExpanded(id_item))
            {
                this->Expand(id_item); // раскрытие эл-та дерева, если есть нижние ветви
            }
            if(!this->IsSelected(id_item))
            {    
                wxMessageBox("OnView 1", "", wxOK ); // сообщение проходит
                wxASSERT_MSG(id_item.IsOk(), "Неверный wxTreeItemId! OnView") ; // ошибка не выдается
                
                this->SelectItem(id_item); // выделение параграфа в дереве, ЗДЕСЬ ВЫЛЕТАЕТ ПРОГРАММА
                
                wxMessageBox("OnView 2", "", wxOK ); // сообщение не проходит
            }
        }
}

В функции поиска элемента структуры ошибок не возникает, элемент находится без проблем.
Ошибка, выдаваемая компилятором:
Program has received a signal-name="SIGSEGV",signal-meaning="Segmentation fault" at operator==({name="i1",value="@0x22d4e0"},{name="i2",value="@0x1f21014"}), file C:\Projekts of VGenba\include\wx\treebase.h:77
Эта ошибка возникает почти всегда, но очень редко программа проходит без сбоев.
Над этой проблемой бьюсь уже неделю, и никак не могу найти ее решения. Пробовал использовать в структуре указатель wxTreeItemId*, результат тот же. Так же пробовал использовать wxTreeItemData в структуре и добавлении wxTreeItemData к создаваемым ветвям, ошибка возникает та же.
Если кто сталкивался или знает способ решения подобной ситуации, помогите.

PM MAIL   Вверх
Kagor
Дата 22.12.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Debian user
****


Профиль
Группа: Экс. модератор
Сообщений: 2946
Регистрация: 28.2.2003
Где: Королевство Кривых

Репутация: нет
Всего: 85



Stajor, извиняюсь, конечно, за оффтоп, но по мойму вы не много разделом ошиблись, судя по этому: ОС- Win2K. Может лучше в общих вопросах это спросить?


--------------------
Disassemble Your life and get the key!
PM ICQ GTalk Jabber   Вверх
Stajor
Дата 22.12.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 11.7.2005

Репутация: нет
Всего: нет



Kagor
Согласен что ошибся (затупил с размещением темы), задал Chipset вопрос о перемещении темы в вопросы WinApi\ MFC\.... ответа пока не получил.
PM MAIL   Вверх
ABATAPA
Дата 25.1.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Цитата(Kagor @ 22.12.2005, 02:43)
Stajor, извиняюсь, конечно, за оффтоп, но по мойму вы не много разделом ошиблись, судя по этому: ОС- Win2K. Может лучше в общих вопросах это спросить?

Извиняюсь и я за offtop ;), но, как новый тут человек, спрошу: почему не здесь? wxWidgets - кроссплатформенная среда, и, по идее, обсуждение использования wxWidgets при создании кроссплатформенных приложений тут - уместно? Я понимаю, что сама проблема, возможно, общего характера, но...

Вопрос не праздный - я пришел сюда для поиска информации о проблемах wxWidgets в общем, и кросс-компиляции программ - в частности.
PM MAIL   Вверх
Kagor
Дата 25.1.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Debian user
****


Профиль
Группа: Экс. модератор
Сообщений: 2946
Регистрация: 28.2.2003
Где: Королевство Кривых

Репутация: нет
Всего: 85



Цитата(ABATAPA @ 25.1.2006, 22:55 Найти цитируемый пост)
Извиняюсь и я за offtop ;), но, как новый тут человек, спрошу: почему не здесь? wxWidgets - кроссплатформенная среда, и, по идее, обсуждение использования wxWidgets при создании кроссплатформенных приложений тут - уместно?
Уместно, но, на мой взгляд, было бы лучше задавать вопросы при проблемах в разработке кросс платформенных приложений в "Общих вопросах", если конечно проблема не связанна ни посредственно с ОС.
К тому же в данной теме про кросс платформенность не было ни слова. smile



--------------------
Disassemble Your life and get the key!
PM ICQ GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.