Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Destroy or Free   Найти похожие ветки 

 
novice_man ©   (2004-11-11 08:29) [0]

Что выбрать Destroy или Free (список TList) и в чем разница.


 
Семен Сорокин ©   (2004-11-11 08:36) [1]

Выбирай Free, он делает проверку на существование экземпляра класса:

procedure TObject.Free;
begin
 if Self <> nil then
   Destroy;
end;


 
begin...end ©   (2004-11-11 08:39) [2]

novice_man ©   (11.11.04 8:29)

Отрывок из справки по TObject.Destroy:

Do not call Destroy directly. Call Free instead. Free verifies that the object reference is not nil before calling Destroy.

Unlike Destroy, Free provides a safeguard when destroying objects that are nil.

А вот и код из System.pas:

destructor TObject.Destroy;
begin
end;

procedure TObject.Free;
begin
 if Self <> nil then
   Destroy;
end.

В других классах (потомках TObject) в деструкторе Destroy могут производиться операции по "подготовке к уничтожению" - освобождение ресурсов, и т.д. Например, вод код деструктора TList.Destroy из Classes.pas:

destructor TList.Destroy;
begin
 Clear;
end.


 
novice_man ©   (2004-11-11 08:49) [3]

Спасибо за ответ. (Да, нужно читать справку к программе)


 
SergP ©   (2004-11-11 09:08) [4]


> он делает проверку на существование экземпляра класса:


ИМХО проверка или указатель не равен Nil еще не значит что это проверка на существование экземпляра класса...


 
Семен Сорокин ©   (2004-11-11 09:13) [5]


> SergP ©   (11.11.04 09:08) [4]

Началось, а как Вы обычно проверяете битая ссылка или нет, у Вас есть код?
Имхо, при правильном подходе это именно и есть проверка на существование экземпляра.



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
3-1098956673
YuRock
2004-10-28 13:44
2004.11.28
Странное поведение функции в Oracle 8i


1-1100526945
<< TEster
2004-11-15 16:55
2004.11.28
Как отличить файл от каталога ?


6-1095591217
Biatri$
2004-09-19 14:53
2004.11.28
Хедер (рапер) для dnsapi.dll


14-1100244430
GreySerg
2004-11-12 10:27
2004.11.28
Как установить компоненты на другом пользователе ?


3-1099309338
RusLAN_
2004-11-01 14:42
2004.11.28
Firebird. Копия БД (Тень)