Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Уничтожение формы   Найти похожие ветки 

 
Top100   (2004-04-20 11:54) [0]

Хелп ПЛЗ с освобождением памяти под ранее созданную форму.При использовании Free вываливается ошибка Access violation


 
Reindeer Moss Eater ©   (2004-04-20 11:55) [1]

При использовании Free у кого/чего?


 
Top100   (2004-04-20 11:59) [2]

Точнее "..название формы.Free" использую при обработке onClose самой формы.


 
Тимохов ©   (2004-04-20 12:01) [3]

код давай


 
Reindeer Moss Eater ©   (2004-04-20 12:03) [4]

использую при обработке onClose самой формы.

Не надо делать этого. Никогда.


 
Top100   (2004-04-20 12:04) [5]


> Тимохов ©   (20.04.04 12:01) [3]
> код давай


Даю:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Form2.Free;
end;


 
Григорьев Антон   (2004-04-20 12:04) [6]

В OnClose явный вызов Free?!!! Нельзя так - после обработки OnClose продолжают выполняться функции формы, а вы её уже уничтожили. Просто поменяйте значение параметра Action на caFree, и форма автоматически освободится, как только это будет возможно. И читайте справку - тогда не придётся писать в форум из-за такой ерунды.


 
Silver Alex ©   (2004-04-20 12:04) [7]

Free в OnClose это ты зря, в OnClose надо ставить Action:=caFree;


 
Top100   (2004-04-20 12:05) [8]


> Reindeer Moss Eater ©   (20.04.04 12:03) [4]
> использую при обработке onClose самой формы.
>
> Не надо делать этого. Никогда.


Так я и спрашиваю как надо то? :)


 
Reindeer Moss Eater ©   (2004-04-20 12:06) [9]

Вторая грубая ошибка - это использование имени левой переменной внутри метода класса для вызова другого метода этого же класса.

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Free;
end;


 
Тимохов ©   (2004-04-20 12:07) [10]

Скажем так: не всегда (но больше чем в половине случаев) уничтожать объект из его же метода нельзя - это приводит к av как в данном случае. В любом случае делать так нельзя (даже если все работает). В остальном полностью согласен с предыдущими ораторами.


 
Reindeer Moss Eater ©   (2004-04-20 12:08) [11]

Так я и спрашиваю как надо то? :)

Зависит от того, модальная у тебя форма или нет. О чем никто еще кроме тебя не знает.


 
Silver Alex ©   (2004-04-20 12:09) [12]


> Так я и спрашиваю как надо то? :)

а как вызываешь? Если модально тогда
with TForm2.Create(nil)  do
try
 ShowModal;
finally
 Free;
end;

а если просто методом Show, тогда в OnClose Action:=caFree;


 
Top100   (2004-04-20 12:10) [13]


> Reindeer Moss Eater ©   (20.04.04 12:08) [11]
> Так я и спрашиваю как надо то? :)
>
> Зависит от того, модальная у тебя форма или нет. О чем никто
> еще кроме тебя не знает.


да модальная


 
Reindeer Moss Eater ©   (2004-04-20 12:12) [14]

with TMyModalForm.Create(Application) do
try
ShowModal;
finally
Free;
end;


 
Top100   (2004-04-20 12:16) [15]

Спасибо большое всем за ответы. Я понял свои грубые ошибки. Извините за мою безграмотность. Учусь.



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
8-1071577967
Виталий
2003-12-16 15:32
2004.04.11
OpenGL


3-1081934475
human
2004-04-14 13:21
2004.04.11
Direct Oracle Access


11-1058608108
Dentall
2003-07-19 13:48
2004.04.11
Динамическое создание формы в KOL


3-1079515099
cluBDEndy
2004-03-17 12:18
2004.04.11
ADO and parameters


14-1082473786
Undert
2004-04-20 19:09
2004.04.11
нЕ подскажете что за кодировка ?