Конференция "KOL" » Выполнение команд до создания окна в МСК
 
  • BMouradov (26.01.09 13:52) [0]
    Добрый день!

    Подскажите, где правильнее расположить команды, которые нужно выполнить до создания главного окна?

    Что-нибудь вроде этого:

    begin // PROGRAM START HERE -- Please do not remove this comment
     if (ParamCount <> 1) or (ParamStr(1) <> '/Auto') then begin
       LogFileOutput('error.log', 'Параметры заданы неверно');
       exit;
     end;

    {$IFDEF KOL_MCK} {$I Project1_0.inc} {$ELSE}

     Application.Initialize;
     Application.CreateForm(TMainForm, MainForm);
     Application.Run;

    {$ENDIF}

    end.

    Если так оставить, то МСК при первом же обновлении переносит текст внутрь комментария.
    Смотрел в Project1_0.inc, но там первой же строкой идет NewMainForm( MainForm, nil );, т.е. сначала создается окно, а потом выполняются другие inc-файлы.

    Можно отказаться от МСК, можно попытаться использовать initialization, но как-то всё коряво выглядит, нет ли более простого решения?
  • Дмитрий К © (26.01.09 14:15) [1]
    {$IFDEF KOL_MCK} {$I before.inc} {$I Project1_0.inc} {$ELSE}
  • Дмитрий К © (26.01.09 14:26) [2]
    > Дмитрий К ©   (26.01.09 14:15) [1]
    Пардон. Неправ.
  • Дмитрий К © (26.01.09 14:57) [3]
    Кажется, нашел решение.
    ...
    {$IFDEF KOL_MCK} {$I before.inc} {$ENDIF}
    begin // PROGRAM START HERE -- Please do not remove this comment
    ...


    before.inc:
    begin
     ...
     {$I Project1_0.inc}
    end.

  • BMouradov (26.01.09 17:01) [4]
    Неординарно! Я попробую, спасибо!
  • D[u]fa (26.01.09 18:25) [5]
    { имя_проекта_1.inc
     This file is for you. Place here any code to run it
     just following Applet creation (if it present) but
     before creating other forms. E.g., You can place here
     <IF> statement, which prevents running of application
     in some cases. TIP: always use Applet for such checks
     and make it invisible until final decision if to run
     application or not. }

    для выполнения кода перед созданием формы...
  • BMouradov (28.01.09 09:36) [6]
    Это да, но перед имя_проекта_1.inc выполняется имя_проекта_0.inc, а там первой же строкой стоит NewForm1( Form1, nil );
    И вот не пойму - то ли в описании ошибка, то ли рекомендуют всегда сначала создавать форму, не показывая ее, прежде чем выполнять какой-либо код.
  • D[u]fa (28.01.09 12:47) [7]
    ....
     NewForm1( Form1, nil );
    {$I ..._1.inc}

    {$I .._2.inc}

    {$I .._3.inc}

     Run( Form1.Form ); - только после выполнения этого форма станет видимой
    ....

    конечно если хочешь ничего не создавать, а сразу вырубить приложение то вариант не совсем подходит
 
Конференция "KOL" » Выполнение команд до создания окна в МСК
Есть новые Нет новых   [134431   +15][b:0][p:0.001]