Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

FreeAndNil   Найти похожие ветки 

 
DelphiLexx ©   (2007-02-09 13:05) [0]


var
procedure MyFreeAndNil(var Obj);
begin
Obj.Free;
Obj := Nil
end;

Почему FreeAndNil(obj) и MyFreeAndNil(obj) имеют разный результат выполнения. Объясните пожалуйста.


 
TRUNK ©   (2007-02-09 13:12) [1]

Что значит разный результат выполнения. Объясните пожалуйста.


 
Правильный Вася   (2007-02-09 13:17) [2]

а оно компилируется ваще?
че за var procedure


 
DelphiLexx ©   (2007-02-09 13:30) [3]


> Что значит разный результат выполнения. Объясните пожалуйста.

Почему я спрашиваю данный вопрос. В своей проге я использую DBGridEh. В одной из колонок при клике по ячейке появляется раскрывающийся список(LookUp поля). Так вот если я начну закрывать форму с этим гридом при раскрытом списке, то выскакивает ошибка. После трудоемкой трассировки выяснил место ошибки:
Пример из DBGridEh:
destructor TCustomDBGridEh.Destroy;
begin
 FIntMemTable := nil;
 if FStyle <> nil then
   FStyle.RemoveChangeNotification(Self);
 FColCellParamsEh.Free;
 Selection.Clear;
 FColumns.Free; FColumns := nil;
 ...

Делаю так, ошибка исчезает
destructor TCustomDBGridEh.Destroy;
begin
 FIntMemTable := nil;
 if FStyle <> nil then
   FStyle.RemoveChangeNotification(Self);
 FColCellParamsEh.Free;
 Selection.Clear;
 FreeAndNil(FColumns)
 ...

Почему так происходит?


 
clickmaker ©   (2007-02-09 13:43) [4]

во FreeAndNil поинтер обнуляется перед фактическим уничтожением объекта, путем создание временной ссылки. Это пресекает любые попытки обратиться к объекту, который находится в процессе убиения (ежели конечно делаются проверки if Obj <> nil)



Страницы: 1 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
3-1168319296
Loginov Dmitry
2007-01-09 08:08
2007.04.01
Медленно изменяются записи при включенном CachedUpdates


3-1168333056
Андреевич
2007-01-09 11:57
2007.04.01
OLE DB error occured. Code 80040E2Fh - что означает?


4-1163717621
Dmitry_177
2006-11-17 01:53
2007.04.01
Часы на API


15-1172871781
Алхимик
2007-03-03 00:43
2007.04.01
Анатолий Погорецкий - робот!


2-1173103378
djnz
2007-03-05 17:02
2007.04.01
подключится к firebird из delphi