|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Тупой вопрос от новичка ))
Сравнительно недавно перешёл на ООП, вроде бы усвоил объектно-ориентированную философию. Только вот есть элементарная проблемка, не знаю, как её решить по-умному:
как определить, создан ли объект? Я пишу так: if (Obj <> nil) then {...} но это вызывает Access Violation, если объект не был создан. Пробовал и так: if Assigned(Obj) then {...} та же фигня. Посоветуйте, как можно решить эту проблему. Возможно, нужно с указателями оперировать? |
#2
|
||||
|
||||
Ну так-то правильно, что проверять на nil.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Очень важно, где был определён Obj. Если это поле формы, то оно при создании формы получает значение nil. Если это локальная переменная функции / процедуры, то там мусор и перед созданием объекта надо эту ссылку инициализировать:
Код:
Obj:= nil; Obj:= <тип>.Create(); Если объект уничтожается, но ссылка будет повторно использоваться, то после уничтожения объекта надо принудительно её привести к nil: Код:
Obj.Free; Obj:= nil; А ваши варианты тогда будут работать. (Я использую Assigned). Последний раз редактировалось AlexSku, 06.04.2011 в 19:43. |
#4
|
||||
|
||||
AlexSku, большое спасибо за совет
|