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