![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уничтожение созданных объектов [D7, WinXP]
Andy BitOff © (2007-01-23 19:23:00)
unit Unit1;
...
type
TSome = class(TObject)
private
...
end;
TSomeList = class(TObjectList)
private
...
public
property Items[Index: Integer]: TSome read GetItems write SetItems; default;
end;
unit Unit2;
...
type
Tfrm_Some = class(TForm)
private
...
public
Faaaa: TSomeList;
property aaaa: TSomeList read Faaaa write Faaaa;
end;
Будут ли автоматически корректно уничтожены объекты property aaaa после уничтожении формы?
umbra (2007-01-24 19:37:00) [1]
> Значит автоматом они не удалятся
если речь идет об объектах, ссылки на которые содержатся в объекте типаTSomeList, то при его уничтожении они будут уничтожены, если
TSomeList.OwnObjects = true (так по умолчанию)
Andy BitOff (2007-01-24 19:31:00) [2]
> TRUNK © (24.01.07 10:46) [5]
> Зачем обьявлять property aaaa если Field Faaaa обьявлен
> публично?
> Надо Faaaa убрать в секцию private.
Ну, конечно, это опечатка. Он в привате.
Значит автоматом они не удалятся. Тогда не имеет особого смысла объявлять его как property, можно просто варом.
TRUNK (2007-01-24 10:46:00) [3]
> Tfrm_Some = class(TForm)
> private
> ...
> public
> Faaaa: TSomeList;
> property aaaa: TSomeList read Faaaa write Faaaa;
> end;
Зачем обьявлять property aaaa если Field Faaaa обьявлен публично?
Надо Faaaa убрать в секцию private.
> Будут ли автоматически корректно уничтожены объекты property aaaa
Уничтожать надо объекты поля Faaaa.
Andy BitOff (2007-01-24 09:24:00) [4]
> Johnmen © (23.01.07 23:56) [3]
> А где их создание?
Ну, например в FormCreate:
aaaa := TSomeList.Create;
aaaa.Add(TSome.Create);
aaaa.Items[0].someField := '123';
Будет ли аааакорректно уничтожен при уничтожении формы?
Там где ее создали
with Tfrm_Some.Create(Self) do begin
try
ShowModal;
finaly
Free; // здесь
end;
end;
Johnmen (2007-01-23 23:56:00) [5]
> Будут ли автоматически корректно уничтожены объекты property
> aaaa после уничтожении формы?
А где их создание?
Kolan (2007-01-23 19:51:00) [6]А если вопрос про объекты внутри самого TSomeList, то да будут.
Kolan (2007-01-23 19:50:00) [7]«[0] Andy BitOff © (23.01.07 19:23)
unit Unit1;
type
TSome = class(TObject)
private
end;
TSomeList = class(TObjectList)
private
public
property Items[Index: Integer]: TSome read GetItems write
SetItems; default;
end;
unit Unit2;
type
Tfrm_Some = class(TForm)
private
public
Faaaa: TSomeList;
property aaaa: TSomeList read Faaaa write Faaaa;
end;
Будут ли автоматически корректно уничтожены объекты property
aaaa после уничтожении формы?»
Нет.
Нужно сделать это в деструкторе.