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

Вниз

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

 
Fast   (2003-09-22 03:57) [0]

Я содаю некий объект работаю с ним и при выходе из программы мне надо знать освобождена ли от него память. Хотел использовать Assigned но после вызова метода free, Assigned все рано возвращаеть true.


 
SergeyX   (2003-09-22 04:06) [1]

Assigned это простая проверка
на nil, вам надо после вызова метода free
прировнять переменную к нулю:

var x:TObject;
begin
x:=TObject.Create;
x.Free;
x:=nil;
end;


 
SergeyX   (2003-09-22 04:35) [2]

И где нибудь вначале программы обнуляйте все объекты,
перед их созданием разумеется))), иначе assigned может вернуть
true даже для тех объектов которые вы вообще не создавали...)

А вообще, если проверка требуется только при за вершении программы, то
об этом не обязательно думать, об этом заботится Windows,
я имею ввиду освобождение памяти


 
Fast   (2003-09-22 04:53) [3]

Спасибо SergeyX.
А проверка требуется не только по завершеню программы, потому ваш совет очень пригодится.

А кроме Assigned можно что-либо использовать для подобной задачи?


 
SergeyX   (2003-09-22 05:09) [4]

Только прямую проверку на nil)
if SomeObject=nil then ...

Я использую множество объектов в своих программах.
Для их "учёта" неплох использовать TList.
При создании объекта добовлять его туда, а
при разрушении удалять.


 
Думкин   (2003-09-22 05:52) [5]

FreeAndNil()


 
SergeyX   (2003-09-23 00:39) [6]

Действительно есть такой метод, но что он обнуляет, я так и не понял).
Переменная содеражащая ссылку на объект осталась <>0 ...)


 
ЮЮ   (2003-09-23 07:14) [7]

Это не метод, а просто процедура и в качестве параметра её и передают переменную, содеражащая ссылку на объект.

И вообще к чему весь это сыр-бор.
В деструкторе объекта (OnDestroy формы) пишем просто
FSomeObject.Free и всё (где FSomeObject - private/protected переменнвя объекта(формы), который создаем(а может и нет) в конструкторе объекта(onCreate формы). Ну откуда, скажите, там может оказаться "мусор"? Только из-за багов в программе, а их чем раньше отловишь, тем лучше :-)



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

Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-18343
ghg
2003-09-23 13:48
2003.10.06
дождаться завершения процесса


14-18614
lak
2003-09-17 17:13
2003.10.06
отдохните от рекламы


1-18315
Support1
2003-09-23 20:44
2003.10.06
---|Ветка была без названия|---


14-18568
McSimm
2003-09-19 13:18
2003.10.06
Пятница


1-18452
Executor
2003-09-22 11:34
2003.10.06
Работа с памятью приложения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский