Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.047 c
15-1182924454
NailMan
2007-06-27 10:07
2007.07.29
Время наработки на отказ?


15-1183225038
@!!ex
2007-06-30 21:37
2007.07.29
Можно ли вернуть РАБОЧУЮЮ, но не совместимой с железом видюху?


4-1171107679
Vemer
2007-02-10 14:41
2007.07.29
Убрать кнопку с панели задач средствами WinApi.


15-1183449672
Inco
2007-07-03 12:01
2007.07.29
Проблема с цветом в TurboExplorer


1-1179726841
bss
2007-05-21 09:54
2007.07.29
Горизонтальная полоса прокруки в ListBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский