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

Вниз

Ссылка на уничтоженный объект   Найти похожие ветки 

 
OlkaGTS   (2004-06-15 16:04) [0]

Уважаемые!

Возник у меня такой вопрос, помогите кто чем может.

...
var
SomeObj: TSomeObj;
...
begin
...
SomeObj.DataSet:=SomeDataSet;
...
// а в это время где-то случился SomeDataSet.Free;
...
//а вот здесь надо проверить не ссылается ли DataSet на уничтоженный объект
if SomeObj.DataSet.Active then
...

end


Как можно выяснить, что SomeObj ссылается на уничтоженный объект? TSomeObj не является наследником TComponent и смысла его таковым делать нет, кроме как из-за Notification. Можно ли как-то по-другому выяснить в момент обращения к свойству DataSet, что он не существует.


 
Плохиш ©   (2004-06-15 16:08) [1]


> помогите кто чем может.

Денег не дам!

Используй FreeAndNil


 
iat   (2004-06-15 16:16) [2]

там, где
// а в это время где-то случился SomeDataSet.Free;
пишем
SomeDataSet.Free;
SomeDataSet:=nil;
// или используем FreeAndNil()

и где надо, проверяем

if (SomeObj.DataSet<>nil) then
 if SomeObj.DataSet.Active then
 ...

 end
 else
else
// делаем ругательство


 
OlkaGTS   (2004-06-15 16:19) [3]

И что сие означает FreeAndNil?
Если речь идет о том, что
SomeDataSet.Free;
SomeDataSet=nil
то это никак не спасает, поскольку
Assigned(SomeObj.DataSet) = true и SomeObj.DataSet <> nil.
А вот при обращении к любому из свойств SomeObj.DataSet.... возникает Access violation, что справедливо, поскольку SomeObj.DataSet непонятно куда ссылается.


 
Тимохов ©   (2004-06-15 16:21) [4]


> OlkaGTS   (15.06.04 16:04)  

Первое. Такие вопросы возникают регулярно.
Второе. Потрудитесь найти (на прошлой неделе был).
Трерье. Узнать никак.


 
Плохиш ©   (2004-06-15 16:25) [5]

Четвёртое. Программистов, у которых // а в это время где-то случился надо увольнять без выходного пособия.


 
malkolinge ©   (2004-06-15 16:29) [6]

FreeNotification + F1


 
AlexG ©   (2004-06-15 16:35) [7]

//Assigned(SomeObj.DataSet) = true и SomeObj.DataSet <> nil.
Надо же присваивать значение NIL после Free, тогда все будет ОК...



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1086947082
zdn
2004-06-11 13:44
2004.06.27
Поиск формы!


14-1086057675
ИМХО
2004-06-01 06:41
2004.06.27
Русские теннисистки рулят!


1-1087047993
Navi
2004-06-12 17:46
2004.06.27
Заморочка в коллекции


14-1086711765
Fredericco
2004-06-08 20:22
2004.06.27
15 минут позора и диплом в кармане.


14-1086896329
YurikGL
2004-06-10 23:38
2004.06.27
Оштрафовали создателя сайта за гиперссылку на 25 $