![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Leklerk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Добрый день! Я вот мучаюсь вопросом, нужно ли явно закрывать компоненты ADODataSet, ADOCommand и т.д. и освобождать память (например, в событии Destroy формы), или при разрушении формы все само произойдет?
|
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Возможны варианты:
1. Если компонент лежит сам на форме, то ничего делать не надо, потому как сам закроется и сам "убъётся". 2. Если создали динамически, и на этапе создания у вас что-то типа Dataset:=TDataset.Create(nil), то надо убивать руками, и делать это при закрытии формы или ещё как-то - это уже ваше дело. 3. Если создали динамически, и на этапе создания у вас что-то типа Dataset:=TDataset.Create(MyForm), где MyForm - это та форма форма, которую вы сейчас вызываете, то можете не беспокоиться, см. п1. Вроде всё, ну если что забыл коллеги дополнят. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Leklerk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Спасибо за ответ!
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Стоит отметить, что все вышесказанное относится ко всем компонентам (наследникам TComponent) -------------------- There are always someone smarter than you... |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Настоятельно рекомендую все датасеты (а также TADOConnection перед выходом из программы) всегда закрывать только ручками (открывать, кстати, тоже). Причина: При уничтожении формы поочерёдно уничтожаются компоненты, принадлежащие форме. Когда дело доходит до датасета, перед уничтожением он сначала закрывается. При закрытии датасета может произойти событие, на которое назначен обработчик. При этом часть элементов уже уничтожена, и возможна ситуация, когда в обработчике произойдёт обращение к уже уничтоженному элементу. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |