Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли удалить объект в его же методе? [D5, D6, D7, Win2k, WinXP]


Страницы:   1 2

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]

Народ, хелп. Нуна ли мне писать отдельно мененджер, или всётаки можно будет рубить объекты вышеописанным образом?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо