Form1->ShowModal(); delete Form1;
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 !
Мож тебе указатель обнулить. Типа Form1=NULL;
================================================
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 что означает что ты поручаешь самому приложению позаботится о том чтобы уничтожить объект при завершении программы...
Цитата:
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 что означает что ты поручаешь самому приложению позаботится о том чтобы уничтожить объект при завершении программы...
Даю выдержку из своего блокнотика... :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 мне понятно... ошибки вроде не стало... но как мне проверить была ли освобождена память ????
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
Цитата:
Originally posted by HexoGenus
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
Хех... логично :о) спасибо !
с ув ДЮВ
Цитата:
Originally posted by HexoGenus
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
Сначала пробуешь выполнить Release
а потом Form1->ShowModal();
Если объекта в памяти уже нет то команда или не сработает или выдаст ошибку...
(Кстати в данном случае я и не сомневаюсь в результате... уже проверял... :) )
типа ошибки нет.. но приложение виснет пострашному :о) думается , что так и должно быть :о))))