Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Баг. Need help

2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Есть форма, на которой наложены один на другой 5 GroupBox-ов и один TreeView , посредством которого опряеделяется, какой GroupBox будет сверху.

При открытии формы идет динамическое заполнение всех компонентов на всех GroupBox-ах. Проблема возникает тогда, когда пытаешься выбрать из TreeView показ другого GroupBox-а - программа виснет и ни на что не реагирует. Как лечить?
295
24 октября 2002 года
gray_k
356 / / 20.12.1999
А как ты делаешь показ определённого GroupBox-а?
2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by gray_k
А как ты делаешь показ определённого GroupBox-а?



GroupBox->Visible=true;
все остальные - false;

Дело в том, что когда нет динамического заполнения данных, все работает нормально.

476
24 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by 911


GroupBox->Visible=true;
все остальные - false;

Дело в том, что когда нет динамического заполнения данных, все работает нормально.



Каким образом выполняется заполнение группы?

2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by man2002ua


Каким образом выполняется заполнение группы?



При создании формы идет запрос данных по сети.
Потом в отдельном потоке принимаются данные, которые заполняют компоненты Edit,Memo.. etc.

476
24 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by 911


При создании формы идет запрос данных по сети.
Потом в отдельном потоке принимаются данные, которые заполняют компоненты Edit,Memo.. etc.



Поток создан средствами языка или API? Синхронизация как обеспечивается?
Компоненты "Edit,Memo.. etc" уже присутствуют в группе или создаются также динамически?

---- если код невелик - покажи

295
24 октября 2002 года
gray_k
356 / / 20.12.1999
Покажи фрагмент кода. А может у тебя потоки не синхронизированы. Я точно не помню, но там вроде их надо связывать с помощью специальной функции.
2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by gray_k
Покажи фрагмент кода. А может у тебя потоки не синхронизированы. Я точно не помню, но там вроде их надо связывать с помощью специальной функции.



Принцип такой:

{
Form->Show();
RequestData()
CreateThread(...,RecieveData,...);
}

RecieveData()
{
recv(s,data,1024,0);
ParseData(data);
Form->GroupBox->Edit->Text=data;
}

476
24 октября 2002 года
man2002ua
218 / / 16.10.2002
У тебя этот глюк даже если поток - один? Попробуй запустить только один поток и проверь - не зависает ли. Если при одном потоке - все ок, значит ставь синхронизацию - самая простая мутекс или семафор, как тебе нравится.
2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by man2002ua
У тебя этот глюк даже если поток - один? Попробуй запустить только один поток и проверь - не зависает ли. Если при одном потоке - все ок, значит ставь синхронизацию - самая простая мутекс или семафор, как тебе нравится.



Там всего один поток юзается. Т.е. такие глюки при одном потоке

476
24 октября 2002 года
man2002ua
218 / / 16.10.2002
тогда не очень понятно почему... я написал легкий пример - с одним потоком, все работает. Попробуй убрать на время работу с сокетами - может ошибка с ними? Попробуй для начала без них.
2.0K
24 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by man2002ua
тогда не очень понятно почему... я написал легкий пример - с одним потоком, все работает. Попробуй убрать на время работу с сокетами - может ошибка с ними? Попробуй для начала без них.



Без потоков все работает. Но дело не совсем в этом - дебагом я вижу, что нужные данные поступают, и заполняются на определенных компонентах. Глюк проявляется тогда, когда я пытаюсь сделать один GroupBox видимым, а остальные спрятать, это происходит как во время заполнения данными, так и после. Если ничего не заполнять (выключить получение данных), то все нормально работает.

293
25 октября 2002 года
SEDEGOFF
586 / / 06.10.2002
Ну а если сначало получить все данные, закрыть поток а затем делать что то видимым. Если данные получаются долго то сдесай ПРОГРЕССБАР
2.0K
27 октября 2002 года
911
13 / / 17.10.2002
Цитата:
Originally posted by SEDEGOFF
Ну а если сначало получить все данные, закрыть поток а затем делать что то видимым. Если данные получаются долго то сдесай ПРОГРЕССБАР



Спасибо всем, вылечилось добавлением переменной-флагом принятия всех данных. После этого идет заполнение и все ок.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог