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

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

Проверка на существование


NewOne ©   (2013-08-04 20:02:00) 

В чем отличие проверки "a <> nil" и "Assigned(a)" ?


Inovet   (2013-08-05 11:01:00) [1]

> [6] icWasya ©   (05.08.13 09:46)

Желательно создавать там же, где и удалять. Ещё брать работу с зозданным в блок try, удалять в finally.


icWasya   (2013-08-05 09:46:00) [2]

Есть небольшая разница в таком случае

type TTestFunc = Function : Pointer;
var
a: TTestFunc;
begin
a := Func1;
if a <> nil then; // здесь будет вызов функции и проверка результата на nil
if Assigned(a) then;// а здесь проверка переменной aна nil
end;


brother   (2013-08-05 06:15:00) [3]

а утечка? объект то не уничтожили...


Jeer   (2013-08-04 23:41:00) [4]

Да.


NewOne   (2013-08-04 20:30:00) [5]


> DVM ©   (04.08.13 20:22) [2]

Значит разницы получается никакой нет?

> Anatoly Podgoretsky ©   (04.08.13 20:11) [1]

Кажется понял, это будет просто проверкой присвоен ли переменной "a" какой-то объект?

То есть в этом коде сам объект просто "потеряется" и к нему больше нельзя будет получить доступ?

var
 a: TNewObject;
begin
 a := TNewObject.Create;
 a := nil;
end;


DVM   (2013-08-04 20:22:00) [6]


> NewOne   (04.08.13 20:02) 
> В чем отличие проверки "a <> nil" и "Assigned(a)" ?

http://docwiki.embarcadero.com/Libraries/XE2/en/System.Assigned


Anatoly Podgoretsky   (2013-08-04 20:11:00) [7]

Не то ни другое не проверяет существование.
Код Assigned легко посмотреть по исходникам.


Наверх

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