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

Вниз

Как правильно удалить созданный объект.   Найти похожие ветки 

 
Nikfel ©   (2007-06-29 15:31) [0]

Чем отличаются Free от Destroy. Мне надо создать массив компонентов, затем удалить последний элемент массива, но с возможностью снова создать этот элемент. Что лудше использовать Free или Destroy для этой задачи. Заранее спасибо.


 
Плохиш ©   (2007-06-29 15:35) [1]

Не царское это дело справку читать? Только не понятно нафик царю программировать?


 
exactly   (2007-06-29 15:36) [2]

лучше опиши зачем всё это
цель какая


 
Anatoly Podgoretsky ©   (2007-06-29 15:37) [3]

> Nikfel  (29.06.2007 15:31:00)  [0]

Description

Do not call Destroy directly. Instead, use the Free method, which checks for a nil reference before calling Destroy.


 
exactly   (2007-06-29 15:39) [4]

в Delphi просто возможен галяк - объекта реально нету, а ссылка на него есть, на убитого его

в .net коде такой ахинеи быть не может


 
Сергей М. ©   (2007-06-29 15:40) [5]


> с возможностью снова создать этот элемент


Выбор между Free и Destroy при любом раскладе никак не влияет на наличие или отсутствие такой возможности.


 
Nikfel ©   (2007-06-29 16:36) [6]

Я собираюсь написать пародию на программу ChoiceEditor, но с большими возможностями и с новым оформлением. Я такую программу уже написал только осталось переделать под kol и продумать оформление.


 
Сергей М. ©   (2007-06-29 16:42) [7]


> Nikfel ©   (29.06.07 16:36) [6]


> собираюсь написать


Флаг тебе в руки, барабан, а также якорь и пионерскую дудку в известные места)

Ты лучше скажи, как это связано с сабжем ?


 
Vlad Oshin ©   (2007-06-29 16:45) [8]

мне кажется что free - освобождает память просто. Ну, тупо. Берет и освобождает.
а Destroy - он что-то делает по описанным правилам, методам..

типа, как:
можно удалить базу через запрос
а можно стереть каталог

имя менять не буду - накосячил так накосячил :)


 
Однокамушкин   (2007-06-29 16:48) [9]


> Vlad Oshin ©   (29.06.07 16:45) [8]
> мне кажется что free - освобождает память просто. Ну, тупо.
>  Берет и освобождает.
> а Destroy - он что-то делает по описанным правилам, методам.
> .

Если что-то кажется насчёт работы метода Free, есть три варианта: а) перекреститься б) почитать справку в) посмотреть исходники Free... лично я рекомендую б) и в), а то иногда такая ерунда кажется...


 
Anatoly Podgoretsky ©   (2007-06-29 16:53) [10]

> Vlad Oshin  (29.06.2007 16:45:08)  [8]

Перекрестись и в справку, выписка выше


 
Vlad Oshin ©   (2007-06-29 16:54) [11]

да, кажется, бывает :)
просто, интуитивно написал, как понимаю.
пообщаться м/б захотелось.. :)


 
Германн ©   (2007-06-29 16:57) [12]


> пообщаться м/б захотелось.. :)
>

Сколько взял на грудь?
:)


 
Anatoly Podgoretsky ©   (2007-06-29 16:58) [13]

> Германн  (29.06.2007 16:57:12)  [12]

А может он курил - грибы?


 
Vlad Oshin ©   (2007-06-29 17:00) [14]

o destroy an object, however, you should call the Free method (also inherited from TObject), because Free checks for a nil reference before calling Destroy. For example,

ну, понятно, че ругаться то :)

да немного, вообщем то принял
ну, ладно, а то ща удалят ветку
пойду на соотв. форумы :)


 
Ega23 ©   (2007-06-29 17:50) [15]


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


Всё.


 
palva ©   (2007-06-29 17:54) [16]

Еще есть FreeAndNil


 
trubin ©   (2007-06-29 21:56) [17]


> Мне надо создать массив компонентов


Возможно не стоит мучаться, а использовать TComponentList


 
DrPass ©   (2007-06-30 10:58) [18]


> Еще есть FreeAndNil

Я знаю карате, дзюдо, капоэйру и еще много-много других страшных слов


 
SKIPtr   (2007-06-30 17:09) [19]


> Ega23 ©   (29.06.07 17:50) [15]
>
>

Хоть иногда бывают ответы на вопросы


 
engine ©   (2007-06-30 17:23) [20]

> [19] SKIPtr   (30.06.07 17:09)

а самому лень посмотреть?
system.pas
line 8390
- это для D7.
Вечно всех носом тыкать надо.


 
SKIPtr   (2007-06-30 19:47) [21]


> а самому лень посмотреть?
> system.pas


Посмотрел понравилось хотя почти всё не понятно
Если знаешь ответ почему не подсказать или направить на нужный путь

Изучить этот файл лета не хватит я с голоду умру так и не успею не чего написать

На простой вопрос не могут дать простой ответ
даже в разделе начинающим


 
TUser ©   (2007-07-01 08:19) [22]

> удалить последний элемент массива, но с возможностью снова создать этот элемент

Лучше ничего не использовать, а у объектов сделать флажек "TypaDestroyed: boolean". Тогда можно сэкономить на создании/уничтожении объектов и выиграть в скорости, правда, проиграв в памяти.



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

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

Наверх




Память: 0.51 MB
Время: 0.019 c
15-1182871267
oldman
2007-06-26 19:21
2007.07.29
Ну... поскольку недавно сбрил бороду и усы...


2-1183556130
gentos
2007-07-04 17:35
2007.07.29
Treeview


1-1179843462
olegz77
2007-05-22 18:17
2007.07.29
Компонент TChart - глюк при увеличении графика


15-1183034579
THandle
2007-06-28 16:42
2007.07.29
C++ Builder 2006 проблема


2-1183376845
wesaaaa
2007-07-02 15:47
2007.07.29
Какая есть компонент-кнопка