Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2010, 17:58   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию удаление экземпляра класса

как правильно удалять экземпляр класса, с помощью Destroy или Free и почему?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 01.11.2010, 18:09   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 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. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось mihali4; 01.11.2010 в 18:15.
Hacker19_90 вне форума Ответить с цитированием
Старый 01.11.2010, 18:26   #3
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

mihali4, в моем Delphi стандартный хелп не работает почему-то.
Изображения
Тип файла: jpg help.jpg (11.8 Кб, 132 просмотров)
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 01.11.2010, 18:38   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от Juffin Посмотреть сообщение
mihali4, в моем Delphi стандартный хелп не работает почему-то.
потому-что его надо устанавливать
ZuBy вне форума Ответить с цитированием
Старый 01.11.2010, 18:39   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А кто мешает зайти в папку ...Delphi\Help и открыть вручную d7.hlp ? И выбрать в предметном указателе "free".
Не мешает переустановить Дельфи, ибо работать без хэлпа - это геморрой...

Последний раз редактировалось mihali4; 01.11.2010 в 18:42.
mihali4 вне форума Ответить с цитированием
Старый 02.11.2010, 11:57   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Смотря что понимать под словом "правильно".

Destroy - это и есть вызов деструктора и удаление объекта. Соответственно, для простого удаления объекта не нужно больше ничего.

С другой стороны, вызовом деструктора никто никогда не пользуется. Все пользуются методом Free. Почему? Ну, Free делает дополнительные проверки - это удобно (и короче писать).

А есть ещё и FreeAndNil - эта процедура мало того, что удалит объект, так ещё и обнулит ссылку (а то появляются потом вопросы "а вот я удалил объект, но Assigned всё равно возвращает True?").

Рекомендую.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элемента из класса контейнера 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