![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FREE
zdm © (2006-07-10 16:42:00)как корректно убить форму(не основную естесвенно),
action:=caFree я так понимаю не освобождает всех ресурсов,,,а надо-бы освободить
StriderMan (2006-07-11 14:33:00) [1]
> zdm
как-то замороченно больно
пиши лучше так:
procedure TForm_Osn.N8Click(Sender: TObject);
begin
with TForm_New_Sc_RKC.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
zdm (2006-07-11 13:26:00) [2]я могу ошибаться конечно, или, не попал под стечение обстоятельств, но делая так:
сначала создаю форму ну например на нажатие кнопки меню.
procedure TForm_Osn.N8Click(Sender: TObject);
begin
Application.CreateForm(TForm_New_Sc_RKC, Form_New_Sc_RKC);
Form_New_Sc_RKC.ShowModal;
end;
а на событие OnClose формы Form_New_Sc_RKC
procedure TForm_New_Sc_RKC.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Form_New_Sc_RKC.Free;
end;
Все работает ,, ни каких ошибок.
StriderMan (2006-07-11 13:06:00) [3]
> а почему в корне не верно form.free
это не верно в обработчике OnClose, т.к. после OnClose с объектом еще много чего делается, а вызов Free объект пристрелит насмерть. в итоге AccessViolation
evvcom (2006-07-11 10:21:00) [4]> [12] zdm (11.07.06 09:50)
угу
zdm (2006-07-11 09:50:00) [5]Ладно, ок, вообщем action:=caFree и не напрягайся, да?
tesseract (2006-07-11 09:48:00) [6]> да так, надо-бы, "память лишней не бывает", а почему в корне
> не верно form.free
Кучу сбросит при закрытии приложения. Имей в виду выделение/освобождение памяти медленный процесс, вот менеджер памяти и не хочет её просто так отдавать системе.
zdm (2006-07-11 09:47:00) [7]да так, надо-бы, "память лишней не бывает", а почему в корне не верно form.free
alexvan (2006-07-10 19:23:00) [8]onClose - Action:=caFree;
onDestroy - Form1:=nil;
Loginov Dmitry (2006-07-10 19:23:00) [9]> а надо-бы освободить
А зачем это, надо-бы?
Плохиш (2006-07-10 18:28:00) [10]Как написано в нелюбимой здесь справке, метод Release.
tesseract (2006-07-10 17:48:00) [11]да нет TForm.Free тоже память в куче отставит.
ДА и [5] учти.
StriderMan (2006-07-10 17:46:00) [12]
> FORM.FREE на ONClose
вызов деструктора в обработчике TForm.OnClose? я правильно понял?
Это же в корне не верно!
zdm (2006-07-10 17:30:00) [13]вобщем накопал инфы,,, action:=caFree, убивает процессы там и т.д. но держит в резерве память, пока её не займет другой процесс, а FORM.FREE на ONClose полное убийство с высвобождением памяти
Dmitrij_K (2006-07-10 16:58:00) [14]Если в OnClose сделать Action := caFreeресурсы освобождаются.
А с чего ты взял что не освобождается?
Ega23 (2006-07-10 16:55:00) [15]Из метода данной формы?
Dmitrij_K (2006-07-10 16:46:00) [16]Form2.Free;