Главная страница
    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.45 MB
Время: 0.04 c
3-1086075537
Izyum
2004-06-01 11:38
2004.06.27
Поддерживается ли Descending в MySQL


6-1083856173
shek
2004-05-06 19:09
2004.06.27
NMFTP


14-1086328993
MBo
2004-06-04 10:03
2004.06.27
Пятничные несложные задачки.


14-1086036446
KilkennyCat
2004-06-01 00:47
2004.06.27
Забугорная жизнь впереди.


14-1086892505
GanibalLector
2004-06-10 22:35
2004.06.27
][APKОВ !!!ту-ту-ту-тууу!!!туууу-тууууу!!!!





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