![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли удалить объект в его же методе? [D5, D6, D7, Win2k, WinXP]
Dust © (2006-03-25 16:08:00)Насколько это будет корректно?
а если делать вот так:
TObjectMessage = procedure (const flag : boolean) of object;
type
EProgrammerIsIdiot = class(Exception);
MyClass2 = class;
MyClass1 = class(TObject)
private
{ Private declarations }
FClassVar1 : MyClass2;
public
{ Public declarations }
procedure Method1A ();
procedure OnCloseNotify (const flagDelete: boolean);
end;
MyClass2 = class(TObject)
private
{ Private declarations }
FCloseNotify : TObjectMessage;
public
{ Public declarations }
property CloseNotification : TObjectMessage read FCloseNotify write FCloseNotify;
procedure Method1B ();
end;
implementation
{ MyClass2 }
procedure MyClass2.Method1B;
begin
if Assigned( FCloseNotify) then FCloseNotify(true);
end;
{ MyClass1 }
procedure MyClass1.Method1A;
begin
FClassVar1 := MyClass2.Create();
FClassVar1.FCloseNotify := OnCloseNotify;
end;
procedure MyClass1.OnCloseNotify(const flagDelete: boolean);
begin
if FlagDelete then FreeAndNil(FClassVar1);
end;
Yanis (2006-03-25 23:07:00) [21]
> Где то, кто то, когда то и как то мне прожуж-ж-жал, что
> эту самую
> FreeAndNil юзать к классам не корректно.
Но для классов же работает.
Cash (2006-03-25 22:29:00) [22]Где то, кто то, когда то и как то мне прожуж-ж-жал, что эту самую
FreeAndNil юзать к классам не корректно.
Ну вот с тех самых пор (т. е. с момента освоения классов) юзаю только
метод Free у самого объекта. Этот метод можно ставить где угодно,
особенно внутри других методов этого класса.
А FreeAndNil вроде обычно для класс-объектов используют.
Т. е. для конструкций вида:
Type
TBlablabla = Object
... ... ...
end;
Dust (2006-03-25 16:58:00) [23]Народ, хелп. Нуна ли мне писать отдельно мененджер, или всётаки можно будет рубить объекты вышеописанным образом?