Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для DorenskiyAA
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20

Порядок запуска приложения

22.06.2012, 13:52. Показов 4210. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, объясните пожалуйста почему конструкторы форм приложения выполняются по порядку:
C++
1
2
3
4
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
….
, а отображение форм (событие FormShow) наступает произвольно, в том числе до наступления
C++
1
Application->Run();
Я по-неопытности думал что FormShow может быть только после Run(). Что тогда значит Run()?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2012, 13:52
Ответы с готовыми решениями:

Как изменить порядок запуска форм в C++ builder
Как изменить порядок запуска форм в C++ builder? К примеру чтобы при запуске программы вместо Form1 запускалась Form2.

Запрет запуска приложения
Люди помогите пожалуйста,нужно запретить запуск определенного приложения допустим *.exe(программно на с++\builder) Заранее блогодарен.

Отслеживание запуска полноэкранного приложения
Требуется отследить запуск полноэкранного приложения. Т.е. при запуске полноэкранного приложения моя программа должна отменять свойство...

28
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
23.06.2012, 00:34
Студворк — интернет-сервис помощи студентам
T2skler правильно сказал - Run() запускает приложение, если это для вас то же, что и форма, то это не так.
0
 Аватар для DorenskiyAA
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
23.06.2012, 06:31  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Run() запускает приложение, если это для вас то же, что и форма, то это не так.
А что тогда есть такое приложение, если формы оживают до запуска приложения? Заранее извиняюсь за безграмотность в этом вопросе.

Добавлено через 3 минуты
Цитата Сообщение от BRcr Посмотреть сообщение
он исполняет код в контексте основного потока, приостанавливая на это время исполнение потока, его вызвавшего
Ясно, насколько правильно я понимаю, основной поток один, и именно он запускается до наступления рун?

Цитата Сообщение от T2skler Посмотреть сообщение
Опишите более подробно, что вы хотите сделать?
Предположим, имеется две формы, один поток. В метод Synchronize() передана функция, которая работает с vcl на обоих формах. Если инициировать/запустить поток при создании или отображении формы 2 модально (как например, это сделал vxg), то поток будет работать с vcl только формы 2, а при ее закрытии возникнет исключение.
Если форму 2 создавать не модельно, то раз на раз не приходится. Если в конструкторах или обработчиках форм FormShow() имеется какой либо код, может глюкануть. Особенная фигня у меня вышла, когда при FormShow формы 2, в vcl подставляются значения по умолчанию, которые берутся с формы 1. До некоторого критического веса все работает, потом может глюкануть.

В архиве exe не собран, нужно компилировать проект.
Вложения
Тип файла: rar Новая папка (13).rar (886.1 Кб, 6 просмотров)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
23.06.2012, 17:17
Мысль, что шуры-муры в файле Project1.cpp происходят раньше, чем махинации в файле Unit1.cpp, не посещала?
0
 Аватар для DorenskiyAA
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
25.06.2012, 07:18  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Мысль, что шуры-муры в файле Project1.cpp происходят раньше, чем махинации в файле Unit1.cpp, не посещала?
Это вы к чему, к тому что суть моего вопроса абсурдна или к тому что при содании форм нельзя инициировать vcl значениями, взятыми из других форм, или к тому что в конструкторах форм не следует писать код?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.06.2012, 10:17
это я к тому, что Project1.cpp - это одно, а Unit1.cpp формы - нечто несколько другое, а все ваши мысли относительно модальных форм и потоков вцл мне не понятны и, видимо, имеют отношение к какому-нибудь конкретному проекту, который может глюкануть, а может и не глюкануть
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,457
25.06.2012, 11:43
LK, TC хочет докопать что же делает Run - в ходе издевателств над IDE выясняется что он делает нечто не совпадающее с мнением обывателей потому как цикл выборки сообщений явно уже работает до вызова Run
0
 Аватар для DorenskiyAA
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 20
25.06.2012, 11:52  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
это я к тому, что Project1.cpp - это одно, а Unit1.cpp формы - нечто несколько другое, а все ваши мысли относительно модальных форм и потоков вцл мне не понятны
а что тут не понятного, формы всего две, не о каком моём проекте речи не идет. Пример приложен вполне наглядный, исключение в проекте формируется тоже вполне понятно почему. Вы говорите, что Run() запускает приложение, но мне не понятно, что подразумевает это слово, если формы оживают до запуска приложения? Суть проблемы очевидна, что при некоторых обстоятельствах запустившиеся до запуска приложения формы, могут обратиться к vcl на форме 1, которая еще на запустилась т.к. Run() не произошло. Т.о. код в обработчиках OnShow и конструкторах форм с обращением к vcl на других формах потенциально опасен.

Добавлено через 1 минуту
Цитата Сообщение от vxg Посмотреть сообщение
TC хочет докопать что же делает Run - в ходе издевателств над IDE выясняется что он делает нечто не совпадающее с мнением обывателей потому как цикл выборки сообщений явно уже работает до вызова Run
когда повзраслею, научусь также локанично выражать свои мысли
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.06.2012, 12:03
Run - не более, чем запуск приложения, естественно, что этому предшествует некая подготовка.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
25.06.2012, 12:09
Цитата Сообщение от DorenskiyAA Посмотреть сообщение
Т.о. код в обработчиках OnShow и конструкторах форм с обращением к vcl на других формах потенциально опасен.
Даже зубочистка потенциально опасна; можно ее ненароком в глаз воткнуть.:black_eye.:
Просто не надо забывать про порядок создания форм и проверять указатели почаще на неравенство NULL.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2012, 12:09
Помогаю со студенческими работами здесь

Порядок инициализации ООП-приложения
Есть с не самой простой структурой классов приложение. Необходимо написать нечто в консоль ПЕРЕД инициализацией всего. Но если нужный код...

Передача данных для запуска приложения
Всем привет. у меня такой вопрос... кто может сделать программу смысл такой, имеется файл кпримеру qwerty.exe если его запускаем...

Запрет запуска второй копии приложения
Всем огромный привет!!!!:) Помогите пожалуйста! Как запретить запуск второй копии приложения?

Вывести окно с сообщением во время запуска приложения
Подскажите если не влом. Сам что-то пока не догадался. В приложении в FormCreate запускается некий сравнительно длительный процесс и форма...

Программа для предотвращения запуска определенных процессов во время работы приложения
Доброго времени суток. Я мало знаком с программированием в целом, и мне нужна помощь, может какие конкретные инструкции. Если точнее, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru