Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно удалить созданный объект. [D7]


Страницы:   1 2

Nikfel ©   (2007-06-29 15:31:00) 

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


TUser   (2007-07-01 08:19:00) [1]

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

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


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


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


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

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

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


engine   (2007-06-30 17:23:00) [3]

> [19] SKIPtr   (30.06.07 17:09)

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


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


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

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


DrPass   (2007-06-30 10:58:00) [5]


> Еще есть FreeAndNil

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


trubin   (2007-06-29 21:56:00) [6]


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


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


palva   (2007-06-29 17:54:00) [7]

Еще есть FreeAndNil


Ega23   (2007-06-29 17:50:00) [8]


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


Всё.


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

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,

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

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


Anatoly Podgoretsky   (2007-06-29 16:58:00) [10]

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

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


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


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

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


Vlad Oshin   (2007-06-29 16:54:00) [12]

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


Anatoly Podgoretsky   (2007-06-29 16:53:00) [13]

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

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


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


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

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


Vlad Oshin   (2007-06-29 16:45:00) [15]

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

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

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


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


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


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


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

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


Nikfel   (2007-06-29 16:36:00) [17]

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


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


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


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


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

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

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


Anatoly Podgoretsky   (2007-06-29 15:37:00) [20]

> 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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо