Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
14-1100011016
cjkorg
2004-11-09 17:36
2004.11.28
Программа, удаляющая из матрицы [A] строку и столбец, содержащие


4-1097801581
Alibaba
2004-10-15 04:53
2004.11.28
Управление потоками


14-1100034968
Cerberus
2004-11-10 00:16
2004.11.28
Предлогаю альтернотиву


3-1099217465
denis24
2004-10-31 13:11
2004.11.28
Параметрический запрос


4-1097753897
Sergey SP
2004-10-14 15:38
2004.11.28
Вставить текст в поле ввода




   Наверх