![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте, давно подозревал в Делфи какую-то странную ошибку и наконец понял откуда исходит подобное, вопрос очень интересный, т.к. такого по идее не должно быть
, смахивает на глюк самой среды((.Смотрите код: Код:
var
o:TObject; {Глобальная переменная, без разницы}
procedure TForm1.FormCreate(Sender: TObject);
begin
o:=TObject.Create;
end;
Procedure TForm1.Del(Ob:TObject);
begin
FreeAndNil(ob);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FreeAndNil(o); {Вариант первый, всё работает}
//Del(o); {Вариант второй, ошибка !!!}
end;а вот если мы используем второй вариант ( вызываем процедуру, которая это делает), то почему-то возникает ошибка при повторном нажатии . Сами понимаете, что такого быть не должно, т.к. всё аналогично, разница лишь в том, что мы уничтожаем объект другой процедурой и всё.Я не знаю что делать, помогите, в чем проблема ? P.S. у меня Delphi 7, у другого человека тоже седьмая, и тоже аналогичная ситуация с ошибкой .Вложил пример, если думаете, что я в чем-то ошибся. Что делать ? |
|
#2
|
||||
|
||||
|
Код:
Procedure TForm1.Del(var Ob:TObject); begin FreeAndNil(ob); end; |
|
#3
|
||||
|
||||
|
Спасибо, очень помог)
![]() |