![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| RST8 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
В моей прграмме есть обработчик TForm1.FormCreate который работает фактически
в до Application.Run
Вопрос: как в зависимости от результата работы этого обработчика (TForm1.FormCreate) сделать так что бы программ не запустилась? Отладчиком я нашел процедуру которая запускается сразу после Application.Run и вставил туда проверку специальной переменной. Но только никак не пойму прочему именно эта процедура вызывается первой. Фактически это процедура OnShow объекта только вот он как раз и непоказывается сразу. Да и думаю этот способ не очень красивый. Подскажите свои решения этого вопроса. --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Halt
-------------------- |
|||
|
||||
| Droll |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 10.11.2004 Репутация: 1 Всего: 3 |
|
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
в этом случае программа выключится, только после выполнения строчки Application.Run; -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| RST8 |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
И в каком месте написать? Если пишем так:
то получаем AV. Если напишем так:
то ошибки не возникает но программа все равно обрабатывает события OnShow и т.д. А это как раз ненадо. Повторю, что я нашел событие обрабатываемое первым после Application.Run и закрываю программу оттуда. Только она все равно на мгновенье появляется на экране, что неприятно и к тому же неизвестно почему именно эта процедура OnShow обрабатыватся первой и всегда ли так будет? Этот элемент сразу не показывается, даже в дизайне не он виден, и покажется он только после программного включения. в общем не совсем нужный метод. Если прям в TForm1.FormCreate написать Halt то опять получаем AV. Меняем здесь Halt на Application.Run то ошибки нет и программа продолжает свою работу. Даже если написать
то опять таки программа продолжает свою работу. Ну должен же быть выход... --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
можно сделать на активную форму:
Visible:=false; но при обработке Application.Run; всё равно на короткий момент форма моргнёт, ещё вариант минимизировать её... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| Poseidon |
|
||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||
|
|||||||
| Демо |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Вариантов много, например:
1. См. Poseidon
2.
3.
-------------------- |
||||||
|
|||||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
Проверил...
halt... работает нормально... приложение нормально завершает работу и без всякого моргания... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| RST8 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
Конечно пробывал. ---------- 2Poseidon: AV = Access Violation ------- Да если все это написать в новом проекте то halt работает. Но я использую Fast Report 3. Далее если на Halt поставть точку останова и далее по F7 (доооолго) можно добраться до Модуль frxClass
после выполнения последне строки ( if FParentForm <> nil then FParentForm.Free;) нажимаем F7 еще раз и получаем этот самый AV. Вот так. --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
1. Проверь порядок создания объекта... возможно где-то у тебя он освобождается раньше...и связи с другими объектами... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| RST8 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
Да я сам в обработчике procedure TForm1.FormCreate(Sender: TObject); ничего такого несоздаю. Только форму создал - показал - уничтожил. Моожет в ней дело, хммм попробую без нее. Пока самое лучшее что я нашел это перенес обработчик в событие OnShow вместо OnCreate . Там использую
Так работает нормально. -------------------- Добавлено позже ----------------------- Разместил Halt самой первой командой в TForm1.FormCreate(Sender: TObject); Сразу вылетает ошибка. Наверное это прикол FastReporta. Это сообщение отредактировал(а) RST8 - 5.11.2005, 21:57 --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
||||
|
|||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
предпологаю... может ошибаюсь... ты компанентом пользуешся или вручную создаёшь? если компанентом.... то скорее всего ошибка из-за того, что он не успел создаться, а уничтожение всё равно происходит.... по крайней мере... такие глюки вылетают при использовании компанентов с закладки Servers...про FastReporta ничего сказать не могу, ни разу не использовал... но возможно ситуация такая же... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| RST8 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
Нет руками не создаю. Хотя можно попробовать, времени нет на такие эксперементы.
Но, если создать пустой проект и положить на него FastReport то при прочих равных с другим проектом условиях такого невозникает. Будет время поподробнее покапаю. Как считаеш перенос обработчика из FormCreate в OnShow это нормально? Вроде бы все работает так как надо. Не получиться ли такой ситуации что он вызовется повторно? --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
|||
|
||||
| Albinos_x |
|
||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
смотря что он делает...
может и получится...
Посмотри настнойки компанента...поставь по умолчанию... а инициализацию далай после строки прерывания работы программы -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |