Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Вниз

Как прервать запуск экзешника? 


Tupnyk   (2001-12-19 18:59) [0]

В Проекте м/у application.initializ... и application.run в зависимости от некоторой функции и где её выполнять если формы еще только генерятся?



Юрий Зотов   (2001-12-19 19:21) [1]

Как это где? Там и выполнять, где нужно - перед Application.Run.

Жмете в меню: Project | View Source. Открывается текст DPR и в нем ручками пишете нужный код в нужном месте. А чтобы прервать запуск, можете написать Halt, либо используйте if - например, так:

Application.Initialize;
if <проверка условия> then
begin
Application.CreateForm(...);
Application.CreateForm(...);
...
Application.Run
end
end.



Дремучий   (2001-12-19 19:28) [2]

или
....
Application.Initialize;
if <проверка условия>
then Application.Terminate
else Application.Run;
end.



Юрий Зотов   (2001-12-19 19:36) [3]

> Дремучий © (19.12.01 19:28)

Application.Run - запускает цикл выборки сообщений.
Application.Terminate - посылает сообщение WM_QUIT.

Поэтому крайне интересно узнать - как же может сработать Application.Terminate, если Application.Run не было вызвано?



Tupnyk   (2001-12-19 21:07) [4]

А если часть условия должна быть получена в результате выполнения некоторой функции, то где эта сама функция должна выполняться?



y-soft   (2001-12-19 21:26) [5]

>Tupnyk
Можно последовать совету Юрия Зотова, но
если есть возможность, то лучше всего производить проверку еще до вызова Application.Initialize, а именно в секции Initialization самого первого загружаемого модуля, и при необходимости там же прерывать выполнение приложения простым вызовом Halt. Т.е. создать специальный модуль для этой цели и поместить его первым в USES файла .DPR



Юрий Зотов   (2001-12-19 21:35) [6]

> Tupnyk (19.12.01 21:07)

Наверное, все же не "выполняться", а "располагаться". Ответ - где угодно, лишь бы она была "видна" из DPR. То есть, хоть в самом DPR, хоть в любом прописанном в нем модуле.



Tupnyk   (2001-12-19 22:19) [7]

СПАСИБО!



Дремучий   (2001-12-19 22:36) [8]

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.



Юрий Зотов   (2001-12-19 22:43) [9]

> Дремучий © (19.12.01 22:36)

> Такой код ошибки не выдает...

А с чего бы ему выдавать ошибку? Конечно, не выдает. Но и ничего не делает: если Application.Terminate просто выкинуть, то будет точно то же самое - завершение по end. Что и было показано в примере.





Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.02 c
3-21912           Сергей Н.             2001-12-04 06:23  2002.01.08  
Обработка даты из IB в Delphi и обратно


3-21984           Mr. Andrew            2001-12-05 20:39  2002.01.08  
Обновление данных


1-22140           Serg5                 2001-12-20 10:17  2002.01.08  
Вопрос, есть ли возможность уменьшить шрифт до 4 пикселей, менятся он меняется(программа не ругается), а на экран (Canvas.Font) он всё равно выводится 8 (самым минимальным)


14-22320          Alexandr              2001-11-14 14:13  2002.01.08  
Wow


6-22292           3d[Power]             2001-10-06 18:16  2002.01.08  
Сетевой код для игры.