Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перезагрузка прогаммы [D6, D7, WinXP]


diman ©   (2005-03-07 12:49:00) 

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

текст:

procedure TForm1.Button4Click(Sender: TObject);
begin
application.Initialize ;
form1.Destroy ;
form2.Destroy ;
application.Create(button3);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end;

итог:
перезапуск происходит, но при закрытии приложения после перезапуска выдаётся ошибка:
progect xxx.exe raised exception class EAccessViolation with message 'access violation at address xxxxxxxx in module'xxx.exe'.Read of
address xxxxxxxx'.Process stopped.Use Step or Run to continue.

вопрос:
как избежать этого сообщения?


Набережных С.   (2005-03-07 15:11:00) [1]


> Без поллитры не поймешь.

Похоже, так и придется жить не понявши - мне стока уже не осилить без фатальных последствий:(


Anatoly Podgoretsky   (2005-03-07 15:04:00) [2]

Нормальная конструкция. Только дурная.


GuAV   (2005-03-07 14:45:00) [3]


> application.Create(button3);

Просто супер :-)


Anatoly Podgoretsky   (2005-03-07 14:43:00) [4]

Набережных С. ©   (07.03.05 14:32) [4]
Без поллитры не поймешь.


Palladin   (2005-03-07 14:40:00) [5]

Это откровения из космоса


Набережных С.   (2005-03-07 14:32:00) [6]

Что-то я не въезжаю в высший смысл этих камланий:( Принял соточку, посидел, подумал - не-а, все равно не въезжаю...Мож кто смилостивится, разъяснит?


DSKalugin   (2005-03-07 13:56:00) [7]

вопервых

form1.Release ;
form2.Release ;

а вовторых делать это надо не по кнопке на форме а в проекте *.dpr

program SkladNal;

uses
 Forms,
 front in 'front.pas' {Form1},
 dm in 'dm.pas' {Data: TDataModule},
 src_dm in 'src_dm.pas' {DataModule1: TDataModule};

{$R *.res}
label r;
begin
 Application.Initialize;
R:
 Application.CreateForm(TData, Data);
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TDataModule1, DataModule1);
 Application.Run;
 if Reload then goto r;
end.

в интерфейсной части любого из модулей объявить
Var Reload:Boolean;
а потом

procedure TForm1.Button4Click(Sender: TObject);
begin
Reload:=True;
Applicatio.Terminate;
end;


Anatoly Podgoretsky   (2005-03-07 13:26:00) [8]

diman   (07.03.05 12:49)  
перезапуск приложения с презезапуском компонентов, но переменные должны остаться в памяти.

Не выйдет, вся память возвращается системе.


MU   (2005-03-07 13:00:00) [9]

вы лучше объясните, зачем вам это все нужно, какая цель?


Наверх

Титульная страница Поиск, карта сайта Написать письмо