Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
3-1081592370
Mouse
2004-04-10 14:19
2004.04.11
Как выделить нужную строку в DBGrid по нажатию на кнопку?


3-1081776206
Addon
2004-04-12 17:23
2004.04.11
Как организовать взаимодействие проги с Инетовской БД?


8-1071045370
типа я
2003-12-10 11:36
2004.04.11
Нет длльки OpenGL.dll


14-1082031385
p0tia
2004-04-15 16:16
2004.04.11
Переменная time


14-1079665134
Думкин
2004-03-19 05:58
2004.04.11
С днем рождения! 19 марта




   Наверх