![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,987
|
![]()
Здравствуйте!
Как определить, уничтожен ли компонент или нет после вызова Free? При выполнении нижеуказанных кодов программа пишет 'create' после Free. Ведь по логике должно быть 'delete'. Заранее спасибо! Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
![]()
используй FreeAndNil, а не Free
var Button2:tButton = nil; |
![]() |
![]() |
![]() |
#3 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,987
|
![]()
Спасибо! Проверил, вроде бы работает!
|
![]() |
![]() |
![]() |
#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 |