Главная страница
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
7-1079838935
DuchmanSoft
2004-03-21 06:15
2004.04.11
Неубиваемый процесс


3-1081433101
ShaG
2004-04-08 18:05
2004.04.11
Excel в DataSet


4-1075460477
comwad
2004-01-30 14:01
2004.04.11
Как найти HWND у TSpeedButton в чужом приложении?


1-1082706888
Шлей Артем
2004-04-23 11:54
2004.04.11
Установка программы


14-1082547606
Knight
2004-04-21 15:40
2004.04.11
Можно ли редактировать набор кнопок в диалогах сохранения...