|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.11.2015, 05:24 | #1 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,949
|
Удаление компонентов
Здравствуйте!
Как определить, уничтожен ли компонент или нет после вызова Free? При выполнении нижеуказанных кодов программа пишет 'create' после Free. Ведь по логике должно быть 'delete'. Заранее спасибо! Код:
Код:
|
06.11.2015, 06:42 | #2 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
используй FreeAndNil, а не Free
var Button2:tButton = nil; |
06.11.2015, 08:16 | #3 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,949
|
Спасибо! Проверил, вроде бы работает!
|
06.11.2015, 11:23 | #4 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Вызов деструктора не обнуляет указатель.
Тут важно понять, что переменные объектов/компонентов - это указатели (4 байта/8 байт), содержащие начальный адрес области памяти, где живёт созданный объект. После вызова деструктора этот кусок памяти система забирает себе и получается, что указатель указывает в космос. И самое важное: деструктор объекта не знает и знать не может про твою переменную-указатель (их может быть несколько), соответственно и обнулить он её не может, если только ты не сделал её глобальной и не обнуляешь её прямо внутри конструктора потомка. Процедура FreeAndNil() сначала обнуляет переданный ей указатель, а потом вызывает деструктор. Код:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамическое создание и удаление компонентов | obsession144 | C# (си шарп) | 1 | 01.04.2014 21:27 |
Удаление компонентов | Lokki23 | C++ Builder | 1 | 15.02.2014 15:10 |
удаление компонентов microsoft office | NinaSSS | Windows | 1 | 17.06.2013 13:00 |
Удаление компонентов | Muniz | Компоненты Delphi | 5 | 09.01.2010 19:12 |
Удаление компонентов | SanekIrk | Общие вопросы Delphi | 8 | 16.08.2008 09:26 |