![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
Akella, Alexeis говорил про FreeAndNil(Form1)
Давайте наконец дадим этой теме спокойной умереть. Все всё выяснили |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Добавлено через 1 минуту и 37 секунд
а как же caFree Добавлено через 3 минуты и 6 секунд да, так неправильно
но здесь я испроавил свою ошибку |
||||
|
|||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
- это еще не удаление формы, а лишь выставление флага для вызвавшей процедуры DoClose; а уже она решает что с ним делать. да еще ее могу перекрыть и навызывать + процедур кучу. и кста после перекрытий ваще могут забыть OnClose вызвать. Ужастик какой-то. )) -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Чтобы не было пустых разговоров скажу, что вариант хоть логически не идеальный, но может работать в однопоточной программе. Почему в однопоточной? Потому что мы его уже давно проверяли под дебагом. Живой он только потому, что после освобождения памяти ее никто не успевает получить. Так оно будет всегда, пока работает 1 поток, потому что в процессе удаления нет дополнительных выделений памяти (разве что эксепшин выскочит). Если будет работать второй поток, то сразу после удаления формы эту память может кто-то запросить и при последующих операциях может нарушиться память чужого потока и дальше последствия непредсказуемы, как говорят UB.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
По идее любая программа может быть много поточной, особенно в тех случаях, когда ты используешь сторонние компоненты.
Так как же тогда правильно работать в многопоточной программе в этом случае? Ты хочешь сказать, что если я в программе использую многопоточность, то я должен опасаться использования этих метов закрытия форм: action := caFree; Form1 := nil; ??? Или я тебя не допонял? Но мы же форму уничтожили. Память освободили. Указатель тоже. Ну и пусть себе на здоровье другой поток занимает эту память, что с того? Она же свободна? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Этих нет, а вот если вызывать FreeAndNil в OnClose то есть шансы завалиться в AV. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Alexeis, Согласен!!! Я же ответил уже, раза 2 или 3, что в том сообщении я ОШИБСЯ!
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Прости тут многа букав, а у меня мало времени -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Как я понял, все согласны, что правильно уничтожать немодальную форму будет так:
Кстати при проектировании MDI приложений - этот код будет весьма кстати |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
отнюдь не кстати т.к. в mdi-приолжениях форм класса TForm1 может быть открыто одновременно n-штук. а Form1 - это всего лишь одна переменная данного класса. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Если ты и прав, то и как тогда быть?
Добавлено через 8 минут и 18 секунд у меня есть MDI приложение, всё там работает очень даже хорошо, даже если я создаю экземляров 5-7 какой либо формы |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
Akella, я уверен, что у тебя все круто работает по твоему алгоритму.
и у меня все ништяк работает по моему алгоритму. тонкости реализации каждый вынес из своего опыта. давай оставим все как есть. может в другой раз всплывет что-нибудь похожее. обсудим еще раз. а пока тему давно закрыли, а мы с тобой топчемся. пошли отсюда. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
![]()
|
| Правила форума "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. |