![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно удалить созданный объект. [D7]
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.