Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проверка на nil


Scott Storch ©   (2011-11-28 16:10:00) 

почему во втором случае проверка возвращает <> nil. разве Assigned(L) не аналогичен L <> nil.


procedure TForm1.Button1Click(Sender: TObject);
var
 L: TStringList;
begin
 if Assigned(L) then
   ShowMessage('= nil')
 else
   ShowMessage('<> nil');

 if L = nil then
   ShowMessage('= nil')
 else
   ShowMessage('<> nil');
end;


Медвежонок Пятачок   (2011-11-28 17:03:00) [1]

почему во втором случае проверка возвращает <> nil.

Потому что проверяемое не равно нил.


Anatoly Podgoretsky   (2011-11-28 16:36:00) [2]

> Scott Storch  (28.11.2011 16:10:00)  [0]

В первом IF очевидная мура написана, абсурд


Ega23   (2011-11-28 16:29:00) [3]


> почему во втором случае проверка возвращает <> nil. разве
> Assigned(L) не аналогичен L <> nil.


Аналогичен. Assigned нужно для процедурных типов, дабы он не "выполнился".
А локальные переменные не инициализируются, да.


RWolf   (2011-11-28 16:12:00) [4]

локальные переменные не инициализируются компилятором.


RWolf   (2011-11-28 16:12:00) [5]

и да, в первом if ветки перепутаны.


Наверх

Титульная страница Поиск, карта сайта Написать письмо