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

Вниз

TObject + TObjectList + Assigned   Найти похожие ветки 

 
SIV5000   (2011-04-29 21:36) [0]

Народ привет. Подскажите пожалуйста как проверить не освобожден ли TObject. Например:

Есть MyList:TObjectList; Добавляю в него

TMyObj = class (TObject)
fName :String;
End;

Есть переменная var Object1

Присваиваю:
Object1:= MyList.Items[0];

Потом удаляю MyList.Delete(0);

А вот теперь, если хочу обратиться к Object1.fName то выдает ошибку.
is Assigned(MyObj) в таком случае не работает. Вот если сделать Object1:= nil; тогда is Assigned(MyObj) равно False;

Есть ли какие то другие способы?


 
Юрий Зотов ©   (2011-04-29 22:00) [1]

Если ObjectList создавался с параметром TRUE, то после Delete объект точно уничтожен, можно даже и не проверять.

А если ObjectList создавался с параметром FALSE, то после Delete объект точно НЕ уничтожен, тоже можно не проверять.


 
Юрий Зотов ©   (2011-04-29 22:02) [2]

Если, конечно, после создания ObjectList у него не менялось OwnsObjects.


 
Германн ©   (2011-04-30 02:36) [3]


> SIV5000   (29.04.11 21:36)
>
> Народ привет. Подскажите пожалуйста как проверить не освобожден
> ли TObject

Никак проверить сей факт не возможно!
P.S. Странно, что ЮЗ не привёл свой пример о "телефонной книге".


 
SIV5000   (2011-04-30 11:07) [4]


> Никак проверить сей факт не возможно!

Точно никак?


 
_Юрий   (2011-04-30 11:52) [5]


>  Assigned(MyObj) в таком случае не работает.


Assigned просто проверяет на nil.
И все, больше ничего не делает.
При разрушении же указатели не обниливаются.


 
sniknik ©   (2011-04-30 12:19) [6]

> Точно никак?
абсолютно!

наглядный пример/практическая демонстрация...
подойди к окну, найди птичку (ну воробьи у вас там водятся?), укажи на нее пальцем...
ну вот, палец это указатель на объект, воробей соответственно объект (абстрактный т.к. ничего не делает).
теперь отвернись от окна, смотри ТОЛЬКО на палец, "МОНИТОРЬ" его состояние... что можешь сказать о птичке? она еще там? или уже улетела/ее съела кошка? подожди несколько минут, а сейчас? есть она там или нет? НЕ СМОТРЕТЬ в окно я сказал!
как только посмотришь это будет обращение к объекту, с соответствующей ошибкой (см. свой же вопрос).


 
SIV5000   (2011-04-30 16:56) [7]

Ясно, всем спасибо. Прийдеться немного переписать :)



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1302093582
Гость
2011-04-06 16:39
2011.08.07
Копирование масссива на ассемблере BASM (пара вопросов)


15-1303135594
mdfe
2011-04-18 18:06
2011.08.07
Есть кто живой?


15-1302812996
Юрий
2011-04-15 00:29
2011.08.07
С днем рождения ! 15 апреля 2011 пятница


15-1302899395
Юрий
2011-04-16 00:29
2011.08.07
С днем рождения ! 16 апреля 2011 суббота


2-1303666383
GreyWolf83
2011-04-24 21:33
2011.08.07
Непонятки со ссылками во встроенном TWebBrowser