Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Form1->ShowModal(); delete Form1;

1.8K
24 октября 2002 года
DanilovYV
41 / / 14.10.2002
проблема такая - я значит создаю объект и загружаю форму

Form1 = new TForm1(Application);
Form1->ShowModal();

затем варианта 2 - или я эту форму закрываю, или же в зависимости от условия я и закрываю это окно, и из этого модального окна вызываю такое же таким же способом - то есть:

Form1->Close();
Form1 = new TForm1(Application);
Form1->ShowModal();

после чего уже точно закрываю окно

From1->Close();

в чём суть - мне надо очистить память ещё момент - форма открывается в одном файле, а закрывается в другом. Где поставить delete Form1; ???
Просто где я ни ставлю - он (delete) вызывается 2 раза и выходит ошибка такого рода - Variant is not an array.

! HELP !
295
24 октября 2002 года
gray_k
356 / / 20.12.1999
Во намутил:eek: . Ничего не понятно. В чём фообще проблема и зачем создавать 2 формы с одним именем.
Мож тебе указатель обнулить. Типа Form1=NULL;
442
24 октября 2002 года
HexoGenus
121 / / 20.03.2000
Даю выдержку из своего блокнотика... :D

================================================
TForm * Formik= new TForm(this);
Formik->Name="Formik";
TButton* button=new TButton(Formik);
button->Parent=Formik;
button->Caption="New Button";
button->Left=10;
button->Top=15;
button->Show();
Formik->Caption=123;
Formik->ShowModal();

// Казалось бы потом созданную форму необходимо уничтожать командой delete Formik;
//Но не все так просто... Оказывается команда delete для форм не всегда работает ... (кто бы объяснил почему :-))))
// Поэтому лучше применять метод формы Release()
Formik->Release();
================================================
Этот материал получен опытным путем (удалял и Delete и Release и смотрел что происходило с местом в памяти на которое ссылался указатель) поэтому возможно я ошибаюсь :)

Вторая вещь в которой я сомневаюсь но почти уверен, это то что явной необходимости удалять форму у тебя нет... она скорее всего не так уж много сжирает у тебя ресурсов...
Если же тебе нужно что бы было удалено окно после завершения твоей программы то тебе его удалять Насколько_Я_Понимаю и не нужно...
В скобочках в команде создания объекта
Form1 = new TForm1(Application);
написано Application что означает что ты поручаешь самому приложению позаботится о том чтобы уничтожить объект при завершении программы...
1.8K
25 октября 2002 года
DanilovYV
41 / / 14.10.2002
Цитата:
Originally posted by HexoGenus
Даю выдержку из своего блокнотика... :D

================================================
TForm * Formik= new TForm(this);
Formik->Name="Formik";
TButton* button=new TButton(Formik);
button->Parent=Formik;
button->Caption="New Button";
button->Left=10;
button->Top=15;
button->Show();
Formik->Caption=123;
Formik->ShowModal();

// Казалось бы потом созданную форму необходимо уничтожать командой delete Formik;
//Но не все так просто... Оказывается команда delete для форм не всегда работает ... (кто бы объяснил почему :-))))
// Поэтому лучше применять метод формы Release()
Formik->Release();
================================================
Этот материал получен опытным путем (удалял и Delete и Release и смотрел что происходило с местом в памяти на которое ссылался указатель) поэтому возможно я ошибаюсь :)

Вторая вещь в которой я сомневаюсь но почти уверен, это то что явной необходимости удалять форму у тебя нет... она скорее всего не так уж много сжирает у тебя ресурсов...
Если же тебе нужно что бы было удалено окно после завершения твоей программы то тебе его удалять Насколько_Я_Понимаю и не нужно...
В скобочках в команде создания объекта
Form1 = new TForm1(Application);
написано Application что означает что ты поручаешь самому приложению позаботится о том чтобы уничтожить объект при завершении программы...



На счёт Release мне понятно... ошибки вроде не стало... но как мне проверить была ли освобождена память ????

442
25 октября 2002 года
HexoGenus
121 / / 20.03.2000
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
1.8K
25 октября 2002 года
DanilovYV
41 / / 14.10.2002
Цитата:
Originally posted by HexoGenus
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )




Хех... логично :о) спасибо !

с ув ДЮВ

1.8K
25 октября 2002 года
DanilovYV
41 / / 14.10.2002
Цитата:
Originally posted by HexoGenus
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )



типа ошибки нет.. но приложение виснет пострашному :о) думается , что так и должно быть :о))))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог