Вниз
Скачать: 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.028 c
3-1079515099
cluBDEndy
2004-03-17 12:18
2004.04.11
ADO and parameters


14-1082105036
Style
2004-04-16 12:43
2004.04.11
Верите ли вы в НЛО, и в то что нас часто посещают инопланетяне?


6-1074180747
Mister_First
2004-01-15 18:32
2004.04.11
Передача файлов по сети без клиента и сервера


3-1081942132
Flashas
2004-04-14 15:28
2004.04.11
mozet xvatit stirat moi voprosy


1-1080319564
zakvaska
2004-03-26 19:46
2004.04.11
Обработчик событий




   Наверх