Вниз
Скачать: CL | DM;

Уничтожение созданных объектов   Найти похожие ветки 

 
Andy BitOff ©   (2007-01-23 19:23) [0]

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 после уничтожении формы?


 
Kolan ©   (2007-01-23 19:50) [1]

«[0] Andy BitOff ©   (23.01.07 19:23)
unit Unit1;
&#133
type
TSome = class(TObject)
private
 &#133
end;

TSomeList = class(TObjectList)
private
 &#133
public
 property Items[Index: Integer]: TSome read GetItems write
SetItems; default;
end;

unit Unit2;
&#133
type
Tfrm_Some = class(TForm)
private
 &#133
public
 Faaaa: TSomeList;
 property aaaa: TSomeList read Faaaa write Faaaa;
end;

Будут ли автоматически корректно уничтожены объекты property
aaaa после уничтожении формы?»

Нет.
Нужно сделать это в деструкторе.


 
Kolan ©   (2007-01-23 19:51) [2]

А если вопрос про объекты внутри самого TSomeList, то да будут.


 
Johnmen ©   (2007-01-23 23:56) [3]


> Будут ли автоматически корректно уничтожены объекты property
> aaaa после уничтожении формы?


А где их создание?


 
Andy BitOff ©   (2007-01-24 09:24) [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;


 
TRUNK ©   (2007-01-24 10:46) [5]


> 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 19:31) [6]


> TRUNK ©   (24.01.07 10:46) [5]
> Зачем обьявлять property aaaa если Field Faaaa обьявлен
> публично?
> Надо Faaaa убрать в секцию private.

Ну, конечно, это опечатка. Он в привате.

Значит автоматом они не удалятся. Тогда не имеет особого смысла объявлять его как property, можно просто варом.


 
umbra ©   (2007-01-24 19:37) [7]


> Значит автоматом они не удалятся

если речь идет об объектах, ссылки на которые содержатся в объекте типа TSomeList, то при его уничтожении они будут уничтожены, если
TSomeList.OwnObjects = true (так по умолчанию)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1168613812
AlexanderMS
2007-01-12 17:56
2007.02.11
Включение в исполняемый файл других файлов.


1-1166097257
webpauk
2006-12-14 14:54
2007.02.11
добавление BitMap в ImageList


15-1169129466
Bless
2007-01-18 17:11
2007.02.11
Какое на аравийском полуострове есть христианское государство?


15-1169220677
pavelaver
2007-01-19 18:31
2007.02.11
как решить задачу


2-1169807074
НиколайКо
2007-01-26 13:24
2007.02.11
Как заставить окно всегда быть онтопом.




   Наверх