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

Вниз

Создание объекта   Найти похожие ветки 

 
scorpi ©   (2003-09-09 06:50) [0]

Как узнать создал я уже объект или нет..???
Мне надо его потом удалить, но перед этим надо знать создан ли он

Код примерно такой:
var Edit1:TEdit;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1:=TEdit.Create(Self);
Edit1.Left:=120;
Edit1.Top:=100;
Edit1.Parent:=self;
Edit1.Text:="Text";
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.destroy;
end;

Но при нажатии второго раза по кнопке Button2 валазит ошибка...!!


 
Hooch ©   (2003-09-09 07:02) [1]

Edit1.destroy -> if Assigned(Edit1) then FreeAndNil(Edit1)


 
Zergling ©   (2003-09-09 07:56) [2]

Достаточно использовать Edit1.Free;

Free - сама проверяет существует объект или нет.


 
scorpi ©   (2003-09-09 08:35) [3]

To Zergling - На Free ругается ... Со второго нажатия Button2.


 
scorpi ©   (2003-09-09 08:36) [4]

To Zergling - На Free ругается ... Со второго нажатия Button2.


 
Radionov Alexey ©   (2003-09-09 08:41) [5]

var Edit1:TEdit=Nil;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1=Nil then
begin
Edit1:=TEdit.Create(Self);
Edit1.Left:=120;
Edit1.Top:=100;
Edit1.Parent:=self;
Edit1.Text:="Text";
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Edit1<>Nil then
FreeAndNil(Edit1);
end;


 
Digitman ©   (2003-09-09 08:42) [6]

procedure TForm1.Button2Click(Sender: TObject);
begin
FreeAndNil(Edit1);
end;


 
Calm ©   (2003-09-09 09:47) [7]


> Free - сама проверяет существует объект или нет.

Free проверяет, равен ли указатель nil. Если не равен, то вызывается десруктор. При этом объект не заниливается. Поэтому при вторичном вызове Free по-прежнему будет вызываться деструктор.

Однозначно нужно использовать FreeAndNil.
P.S.
Еще более однозначно - нужно внимательнее следить за рождением и уничножением объектов в программе :)


 
KSergey ©   (2003-09-09 09:57) [8]

Ссылка по теме для автора:
http://www.delphikingdom.com/helloworld/runtime_comp.htm



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

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

Наверх




Память: 0.48 MB
Время: 0.028 c
1-71617
Pavel Oliynik
2003-09-11 15:41
2003.09.22
как загрузить строку ресурса ? дайте плз. рабочий пример


14-71882
Zhenka
2003-09-03 08:47
2003.09.22
Подскажите как оптимизировать код.


14-71865
МаХиМ
2003-09-02 18:02
2003.09.22
Как создать заставку для программы?


1-71632
Николай
2003-09-08 20:08
2003.09.22
Сохранение динамически-созданных компанент


4-72007
Alexey.FromKiev.Ask
2003-07-21 17:38
2003.09.22
Readfile и буфер