![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прервать запуск экзешника?
Tupnyk © (2001-12-19 18:59:00)В Проекте м/у application.initializ... и application.run в зависимости от некоторой функции и где её выполнять если формы еще только генерятся?
Юрий Зотов (2001-12-19 22:43:00) [1]> Дремучий © (19.12.01 22:36)
> Такой код ошибки не выдает...
А с чего бы ему выдавать ошибку? Конечно, не выдает. Но и ничего не делает: если Application.Terminate просто выкинуть, то будет точно то же самое - завершение по end. Что и было показано в примере.
Дремучий (2001-12-19 22:36:00) [2]2 Юрий Зотов © (19.12.01 19:36)
просто програма будет завершаться не по Application.Terminate;,
а по
end.
Вы правы, тем не менее такой код ошибки не выдает...
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Terminate;
//Application.Run;
end.
Tupnyk (2001-12-19 22:19:00) [3]СПАСИБО!
Юрий Зотов (2001-12-19 21:35:00) [4]> Tupnyk (19.12.01 21:07)
Наверное, все же не "выполняться", а "располагаться". Ответ - где угодно, лишь бы она была "видна" из DPR. То есть, хоть в самом DPR, хоть в любом прописанном в нем модуле.
y-soft (2001-12-19 21:26:00) [5]>Tupnyk
Можно последовать совету Юрия Зотова, но
если есть возможность, то лучше всего производить проверку еще до вызова Application.Initialize, а именно в секции Initialization самого первого загружаемого модуля, и при необходимости там же прерывать выполнение приложения простым вызовом Halt. Т.е. создать специальный модуль для этой цели и поместить его первым в USES файла .DPR
Tupnyk (2001-12-19 21:07:00) [6]А если часть условия должна быть получена в результате выполнения некоторой функции, то где эта сама функция должна выполняться?
Юрий Зотов (2001-12-19 19:36:00) [7]> Дремучий © (19.12.01 19:28)
Application.Run - запускает цикл выборки сообщений.
Application.Terminate - посылает сообщение WM_QUIT.
Поэтому крайне интересно узнать - как же может сработать Application.Terminate, если Application.Run не было вызвано?
Дремучий (2001-12-19 19:28:00) [8]или
....
Application.Initialize;
if <проверка условия>
then Application.Terminate
else Application.Run;
end.
Юрий Зотов (2001-12-19 19:21:00) [9]Как это где? Там и выполнять, где нужно - перед Application.Run.
Жмете в меню: Project | View Source. Открывается текст DPR и в нем ручками пишете нужный код в нужном месте. А чтобы прервать запуск, можете написать Halt, либо используйте if - например, так:
Application.Initialize;
if <проверка условия> then
begin
Application.CreateForm(...);
Application.CreateForm(...);
...
Application.Run
end
end.