crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Две формы !, проблемка при функции show() у второй формы
maxvanceffer
  опции профиля:
сообщение 9.6.2009, 19:26
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подскажите почему так происходит :

Вообщем после того как первая форма делает всё что нужно должна отобразиться вторая (её я добавил через креатор, то есть он сам там все инклуды прописал) я делаю примерно следующее

void Splash::vsioOK(){
   MainDialog w;
   w.show();
}


И после того как отрабатывает эта функция второе окно на секунду появляться её края и она тут же исчезает а винда подаёт звук что действие не может быть выполнена .

Ребять кто знает почему она не отображаться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 14.6.2009, 14:34
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(BRE @ 14.6.2009, 15:06) *
Это как? Программа - это абсолютно строгая последовательность действий. Ни каких случайностей там быть не должно... ;)

Шутник :) Я о том, что некоторые баги проявляются при разных стечениях обстоятельств, разные ОС, разные компьютеры, битые винты, плохая связь на линии, злой антивирус. Причем хуже всего, когда указатель каким-то макаром становится псевдо-валидным, к нему можно обращаться, работать как с объектом, а вот в его членах данных мусор.

Цитата(BRE @ 14.6.2009, 15:06) *
К радости! Зачем мне тянуть в релиз код, который по умолчанию никогда не выполниться? И assert'ы как раз для таких проверок и придумались.


Мне кажется тут не та же ситуация. Одно дело, когда данные должны быть в обязательном порядке валидные и совсем другое - parent(). У объекта может и не быть родителя, т.е. тут двойственная ситуация, которая не означает, что программа работает не правильно.

С другой стороны дальнейшая работа приложения врятли будет корректной. Хотя, если это какой-нибудь не критичный участок типа дополнительного функционала в программе, которым пользователи могут и не пользоваться никогда, то зачем закрывать программу? У нас на работе в программе есть функции, которые заведомо не работают и постоянно выдают AV (программа на Delphi), но она прекрасно продолжает работать и мы не пользуемся этими функциями, чтобы не получать лишние варнинги.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 14.6.2009, 14:54
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(SABROG @ 14.6.2009, 15:34) *
Шутник :) Я о том, что некоторые баги проявляются при разных стечениях обстоятельств, разные ОС, разные компьютеры, битые винты, плохая связь на линии, злой антивирус. Причем хуже всего, когда указатель каким-то макаром становится псевдо-валидным, к нему можно обращаться, работать как с объектом, а вот в его членах данных мусор.

Если происходят такие чудеса, то где гарантия, что использование проверки if( wnd ) вместо assert исправит ситуацию.... :)
Но я все равно уверен, что в грамотно написанной программе никаких случайностей быть не может.
Если человек пишить
QObject *parenObj;
QWidget *wnd = new QWidget( parentObj );

и этот код работает в debug и сыпется в release, то это проблемы самого человека (его кода).

Цитата(SABROG @ 14.6.2009, 15:34) *
Мне кажется тут не та же ситуация. Одно дело, когда данные должны быть в обязательном порядке валидные и совсем другое - parent(). У объекта может и не быть родителя, т.е. тут двойственная ситуация, которая не означает, что программа работает не правильно.

Вот именно в этой ситуации использование assert оправдано. Во время разработки программист может забыть указать родителя или по ошибке в качестве парента будет указан объект другого класса. Во время отладочного запуска ему тут-же датут по рукам и он все исправит. После отладки данная проверка уже не нужна, мы уверены что парент тот который надо.
Еще бывают ситуации, когда по логике работы программы объекты могут быть разными или их может не быть вообще, вот тогда нужно добавлять проверки, которые будут жить и работать всегда. НО только если это предусмотренно самой программой!

Цитата(SABROG @ 14.6.2009, 15:34) *
С другой стороны дальнейшая работа приложения врятли будет корректной. Хотя, если это какой-нибудь не критичный участок типа дополнительного функционала в программе, которым пользователи могут и не пользоваться никогда, то зачем закрывать программу? У нас на работе в программе есть функции, которые заведомо не работают и постоянно выдают AV (программа на Delphi), но она прекрасно продолжает работать и мы не пользуемся этими функциями, чтобы не получать лишние варнинги.

Если кусок программы не работает, то может более гуманно вставить заглушку с выводом сообщения типа "Куда ты тыкаешь, эта функция не реализована!". :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- maxvanceffer   Две формы !   9.6.2009, 19:26
- - Litkevich Yuriy   после выхода из функции объект перестанет существо...   9.6.2009, 19:40
- - maxvanceffer   Да уж представляю как смеялись когда отвечали .......   9.6.2009, 23:11
- - Litkevich Yuriy   maxvanceffer, если это диалог, который должен блок...   9.6.2009, 23:27
- - igor_bogomolov   Цитата(maxvanceffer @ 10.6.2009, 0:11) Да...   9.6.2009, 23:29
- - maxvanceffer   А вот тут возник такой вопрос. Вот в первой форме ...   10.6.2009, 12:16
- - maxvanceffer   Вот я сделал всё по совету igor_bogomolov через у...   13.6.2009, 5:40
- - Litkevich Yuriy   Цитата(maxvanceffer @ 13.6.2009, 9:40) А ...   13.6.2009, 10:27
- - maxvanceffer   Просто первая прячится при открывании второй, что ...   13.6.2009, 20:31
- - Litkevich Yuriy   Если ты передаёшь во второе окно указатель на перв...   13.6.2009, 21:27
- - maxvanceffer   А можно маленикй пример ... А что то туго как то д...   13.6.2009, 21:43
|- - BRE   Цитата(maxvanceffer @ 13.6.2009, 22:43) А...   13.6.2009, 22:18
|- - SABROG   Цитата(BRE @ 13.6.2009, 23:18) Если я пра...   14.6.2009, 12:44
|- - BRE   Цитата(SABROG @ 14.6.2009, 13:44) Q_ASSER...   14.6.2009, 13:06
- - Litkevich Yuriy   Цитата(maxvanceffer @ 14.6.2009, 1:43) wi...   13.6.2009, 22:06
- - maxvanceffer   Раскрывающийся текстnamespace Ui { class Setti...   13.6.2009, 22:13
- - Litkevich Yuriy   1) Один вариант тебе написал BRE. 2) Второй вариан...   13.6.2009, 22:39
|- - BRE   Цитата(Litkevich Yuriy @ 13.6.2009, 23:39...   13.6.2009, 22:45
- - maxvanceffer   Ура всем спосибо получилась по примеру BRE , пытал...   13.6.2009, 23:26
- - Litkevich Yuriy   Цитата(BRE @ 14.6.2009, 2:45) Метод paren...   14.6.2009, 0:22
- - SABROG   Цитата(BRE @ 14.6.2009, 14:06) Она и не д...   14.6.2009, 14:01
|- - BRE   Цитата(SABROG @ 14.6.2009, 15:01) Но вот ...   14.6.2009, 14:06
- - SABROG   Цитата(BRE @ 14.6.2009, 15:06) Это как? П...   14.6.2009, 14:34
- - BRE   Цитата(SABROG @ 14.6.2009, 15:34) Шутник ...   14.6.2009, 14:54


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 11:49