> -- Александр Ильин писал(а):
> Или я что-то упустил?То я передал Вам слово-в-слово что обычно говорят в "компаниях", использующих Delphi
А реальность такова, что IS ни "проверяет на мусор" ни выбрасывает исключение.
Но Assigned() не помогает точно так же!Мусорные указатели, на самом деле - большая проблема. Надо следить, что-бы они в коде не порождались. Для этого рекомендуют избегать использования .Free, а пользоватьсяFreeAndNil(), например.
Простой пример:## Код:
```
var
  list1, list2: TList;
begin
  list1 := TList.Create;
  list1.Free;
  if list1 is TList then
    ShowMessage('After call to list.Free the list is TList')
  else
    ShowMessage('After call to list.Free the list isn''t TList');
  if Assigned(list1) then
    ShowMessage('After call to list.Free the list is assigned')
  else
    ShowMessage('After call to list.Free the list isn''t assigned');
  list2 := TList.Create;
  FreeAndNil(list2);
  if list2 is TList then
    ShowMessage('After call to FreeAndNil(list) the list is TList')
  else
    ShowMessage('After call to FreeAndNil(list) the list isn''t TList');
  if Assigned(list2) then
    ShowMessage('After call to FreeAndNil(list) the list is assigned')
  else
    ShowMessage('After call to FreeAndNil(list) the list isn''t assigned');
```
покажет:> -- Цитата:
> After call to list.Free the list is TListAfter call to list.Free the list is assignedAfter call to FreeAndNil(list) the list isn't TListAfter call to FreeAndNil(list) the list isn't assigned