![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчянин
Форумчанин
Регистрация: 05.04.2009
Сообщений: 446
|
![]()
как правильно удалять экземпляр класса, с помощью Destroy или Free и почему?
Nobody expects Spanish Inquisition!
|
![]() |
![]() |
![]() |
#2 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
![]()
Метод Destroy используется для разрушения объекта,
Destroy является деструктором Delphi. Он используется для разрушения объекта и освобождения памяти, которая была распределена объекту. Destroy вызывается методом Free, представляющим собой функцию, которую следует вызывать для разрушения объектов, сконструированных Create. Метод Free Если вы создали объект, то для разрушения объекта и освобождения распределенной памяти следует использовать Free. Free гарантирует успешную работу даже тогда, когда объект является NIL, поэтому Free следует всегда применять вместо Destroy. На самом деле Free вызывает Destroy, если разрушаемый объект отличный от NIL. То Juffin. В дополнение к разъяснению от Hacker19_90. Все это вполне доступно расписано в штатном хэлпе, которым вы (судя по всему) так и не научились пользоваться. Или просто предпочитаете, чтобы вам разжевывали и клали в клюв ? Модератор.
Mess with the best, die like the rest.
![]() Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 Последний раз редактировалось mihali4; 01.11.2010 в 18:15. |
![]() |
![]() |
![]() |
#3 |
Форумчянин
Форумчанин
Регистрация: 05.04.2009
Сообщений: 446
|
![]()
mihali4, в моем Delphi стандартный хелп не работает почему-то.
Nobody expects Spanish Inquisition!
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
![]()
потому-что его надо устанавливать
|
![]() |
![]() |
![]() |
#5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
А кто мешает зайти в папку ...Delphi\Help и открыть вручную d7.hlp ? И выбрать в предметном указателе "free".
Не мешает переустановить Дельфи, ибо работать без хэлпа - это геморрой... ![]() Последний раз редактировалось mihali4; 01.11.2010 в 18:42. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Смотря что понимать под словом "правильно".
Destroy - это и есть вызов деструктора и удаление объекта. Соответственно, для простого удаления объекта не нужно больше ничего. С другой стороны, вызовом деструктора никто никогда не пользуется. Все пользуются методом Free. Почему? Ну, Free делает дополнительные проверки - это удобно (и короче писать). А есть ещё и FreeAndNil - эта процедура мало того, что удалит объект, так ещё и обнулит ссылку (а то появляются потом вопросы "а вот я удалил объект, но Assigned всё равно возвращает True?"). Рекомендую.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление элемента из класса контейнера | Tema_Crazzzy | Общие вопросы C/C++ | 7 | 26.11.2010 15:51 |
ListBox, привязка экземпляра класса к Item. Возможно ли? | Casper-SC | Общие вопросы .NET | 1 | 24.05.2010 10:40 |
Создание экземпляра компонента | mar4elo | Общие вопросы C/C++ | 2 | 14.05.2010 05:40 |
Выгрузка(удаление) экземляра класса | tolikman | Microsoft Office Excel | 6 | 25.01.2009 03:30 |
Определить Код Экземпляра устройства! | sashahttp | Win Api | 3 | 24.01.2009 08:55 |