Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Внизкак проверить существует ли объект Найти похожие ветки
← →
logslava (2006-11-01 15:06) [0]Здравствуйте, мастера!
Подскажите пожалста, как проверить в некоей процедуре
MyProc(Obj: TObject...) "живой" ли этот объект?
проверять
if Obj<>nil then...
недостаточно, ведь ссылка не обНИЛяется при вызове деструктора Free
т. е. совсем не обязательно что моя процедура будет вызвана для инициализированного объекта, а не удаленного - а нужно обращаться к полям и методам
← →
Джо © (2006-11-01 15:14) [1]Нужно писать программу так, чтобы подобной ситуации не возникала. А законный отлуп по AV будет честным предупреждением о том, что где-то в программе эта схема нарушается и нужно исправлять программу.
← →
Desdechado © (2006-11-01 15:17) [2]FreeAndNil при разрушении объекта или просто :=nil после Free
← →
Anatoly Podgoretsky © (2006-11-01 15:18) [3]Это не возможно в принципе.
Пиши правильную программу.
← →
logslava (2006-11-01 15:19) [4]дело в том, что модуль с процедурой будет подключаться к программе не мной писанной и нелишним было бы проверить (написал ли другой программист FreeAndNil или же просто Free - заранее неизвестно)
← →
Джо © (2006-11-01 15:19) [5]> [2] Desdechado © (01.11.06 15:17)
> FreeAndNil при разрушении объекта или просто :=nil после
> Freevar
O1,
O2: TObject;
...
O1 := O2;
FreeAndNil (O1);
MyProc (O1);
← →
Джо © (2006-11-01 15:20) [6]> MyProc (O1);
То есть MyProc(02);
← →
Anatoly Podgoretsky © (2006-11-01 15:21) [7]Desdechado © (01.11.06 15:17) [2]
Я бы не стал закладываться на nil
.Create
...
:= nil;
...
if Obj<>nil then...
← →
logslava (2006-11-01 15:21) [8]я-то знаком с этим принципом, но не факт, что другой напишет правильно и вызовет мою процедуру
← →
Джо © (2006-11-01 15:22) [9]> [4] logslava (01.11.06 15:19)
> дело в том, что модуль с процедурой будет подключаться к
> программе не мной писанной и нелишним было бы проверить
> (написал ли другой программист FreeAndNil или же просто
> Free - заранее неизвестно)
Значит, отлуп по AV нужно показывать тому программисту, который писал "ту программу". На предмет тыкнуть носом и сказать — у тебя в программе ошибка :)
← →
MetalFan © (2006-11-01 15:24) [10]ну это уже не должно быть твоей головной болью!
← →
Desdechado © (2006-11-01 15:24) [11]Джо © (01.11.06 15:19) [5]
Ну, извратиться можно и не так еще, вот только зачем?
← →
Anatoly Podgoretsky © (2006-11-01 15:29) [12]> Джо (01.11.2006 15:22:09) [9]
ПР: Где?
АП: в 17 строке.
← →
Джо © (2006-11-01 15:34) [13]> [11] Desdechado © (01.11.06 15:24)
> Джо © (01.11.06 15:19) [5]
> Ну, извратиться можно и не так еще, вот только зачем?
Ничего нереального не вижу. Разве ссылка на объект не может содержаться более, чем в одной переменной? Всего лишь показываю, что FreeAndNill никак в этом случае не поможет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c