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

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

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;


Наверх

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