![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перезагрузка прогаммы [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]вы лучше объясните, зачем вам это все нужно, какая цель?