![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка на существование
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 легко посмотреть по исходникам.