Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизСоздание объекта Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c