![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Корректное уничтожение форм, созданных в runtime...
3APA3A © (2004-08-20 15:03:00)Есть процедура
for i := 1 to ... do TForm1.Create(nil).Show;
В обработчике TForm1.OnClose написано
Self.Free;
Корректно ли здесь возвращается память?
Просто лень возится с массивом типа TForm1 и т.д.
s999 (2004-08-20 15:31:00) [1]
> > То есть - если я напишу Action := caFree - все будет нормально?
>
>
> Да.
Хотя, тут есть забавный момент. Если ты где-нибудь далее, в обработчиках, напишешь:
Application.ProcessMessages;
То... можешь вернуться к ситуации с которой начал топик :))
Anatoly Podgoretsky (2004-08-20 15:26:00) [2]TUser © (20.08.04 15:22) [12]
Из самого Close :-)
s999 (2004-08-20 15:26:00) [3]
> То есть - если я напишу Action := caFree - все будет нормально?
Да.
3APA3A (2004-08-20 15:24:00) [4]Да... Не виртуальный... Только сейчас удосужился посмотреть...
То есть - если я напишу Action := caFree - все будет нормально?
TUser (2004-08-20 15:22:00) [5]Self.Close не прокатит?
s999 (2004-08-20 15:21:00) [6]Эх... Free не виртуальный, поэтому твой код отработает только при твоем же явном вызове. Если хочешь все-таки убедится, то вставляй в Destroy.
Суслик (2004-08-20 15:20:00) [7]ну полиформизм типа?
free не виртаульнаый метод.
3APA3A (2004-08-20 15:19:00) [8]Представляю. А конкретнее?
Суслик (2004-08-20 15:17:00) [9]
> MessageBox не вылезает при закрытии формы из чего я делаю
> вывод что Free не вызывается...
зря делаете.
Принцыпы ООП представляете?
3APA3A (2004-08-20 15:16:00) [10]метод Free не вызывается при Action := caFree;
пишу
procedure TForm1.Free;
begin
MessageBox(0, 'Free', nil, MB_TOPMOST);
inherited Free;
end;
MessageBox не вылезает при закрытии формы из чего я делаю вывод что Free не вызывается...
HSolo (2004-08-20 15:15:00) [11][3] в обработчике OnClose
Суслик (2004-08-20 15:13:00) [12]
> 3APA3A © (20.08.04 15:12) [4]
ну типа [3]
3APA3A (2004-08-20 15:12:00) [13]to Sandman25
хорошо, создам я ее как TForm1.Create(Application).
а как мне вызвать Free при WM_Close?
to Anatoly Podgoretsky
благодарю за очень содержательный ответ.
Anatoly Podgoretsky (2004-08-20 15:06:00) [14]Сам себе харакири делаешь.
ламер (2004-08-20 15:06:00) [15]Action := caFree;
Sandman25 (2004-08-20 15:04:00) [16]TForm1.Create(Application)
и не надо будет возиться.
> Корректно ли здесь возвращается память?
Нет