Показать сообщение отдельно
  #3  
Старый 06.04.2011, 19:38
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Очень важно, где был определён Obj. Если это поле формы, то оно при создании формы получает значение nil. Если это локальная переменная функции / процедуры, то там мусор и перед созданием объекта надо эту ссылку инициализировать:
Код:
Obj:= nil;
Obj:= <тип>.Create();
(прочитайте справку по Delphi. Компилятор инициализирует поля сложных типов (record, class) и глобальные переменные. Локальные переменные функций всегда содержат мусор.)

Если объект уничтожается, но ссылка будет повторно использоваться, то после уничтожения объекта надо принудительно её привести к nil:
Код:
Obj.Free;
Obj:= nil;
Есть хороший совет вместо Free использовать только FreeAndNil.

А ваши варианты тогда будут работать. (Я использую Assigned).
Ответить с цитированием