как правильно проверять существование обьекта ?
знаю два способа
  generic_icons: TStringList;
 if Assigned(generic_icons) then
and 
 if generic_icons <> nil then
оба не правильные и не работают =)
			
		Модератор: Модераторы

  
   if generic_icons is TStringList then Label1.Caption := 'Yes'
   else Label1.Caption := 'No';
Logo писал(а):А это всегда работает.
- Код: Выделить всё
if generic_icons is TStringList then Label1.Caption := 'Yes'
else Label1.Caption := 'No';
var generic_icons: TStringList = nil;Try
  {Любое обращение к объекту}
Except
  on EAccessViolation do
    ShowMessage('ФигВам а не объект');
End;Mr.Smart писал(а):Logo писал(а):А это всегда работает.
- Код: Выделить всё
if generic_icons is TStringList then Label1.Caption := 'Yes'
else Label1.Caption := 'No';
Если переменная не инициализированна то получите ошибку доступа к памяти!
Logo писал(а):Я так понял, что у Attid не стандартная ситуация. Не тот уровень у него, чтобы не понять если переменная не nil, то ее не стоит проверять на nil.

Sergei I. Gorelkin писал(а):...И даже если они доступны, это может оказаться только что уничтоженный объект, который будет переписан через пару миллисекунд...
Проще следить за тем, что записывается в переменную.

Sergei I. Gorelkin писал(а):В общем случае это практически невозможно.

Attid писал(а):если его не создали. но передают как созданный


Max Rusov писал(а):Тогда другая (уже практически осмысленная) задача. Есть объект, из него вызывается какая-то процедура. В результате сложной, непредсказуемой последовательности событий при выходе из этой процедуры может оказаться так что наш объект уже был уничтожен, соотв. обращаться к его полям и свойствам нельзя. Хочется отследить эту ситуацию и как-то обработать, например кинуть Abort. Как это сделать наиболее эффективно?
Max Rusov писал(а):Пример задачи: есть некий интерфейс-билдер с кнопочками и событиями OnClick. Что напишут в обработчике OnClick -
заранее неизвестно, могут убить и кнопочку, и форму на которой она лежит. В "обычном" языке - это приведет к AV - сам дурак.
А вот в "защищенной" среде - хотелось бы выдать цивильную ошибку...
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1