{ Модуль описания функций инициализации скриптов. }

{~InitializeMain
  инициализация всех модулей для начала работы главного скрипта.
  эти операции одинаковые для всех сприптов, поэтому вынесены в подпрограмму.
  последовательность инициализации не должна быть нарушена!
  aXml - входное задание XML.
    <>NULL - будет сохранено как тестовое в файле aTestFileName.
              если aXml тестовое задание будет возвращено значение =NULL.
    =NULL - будет попытка загрузить тестовое задание из файла aTestFileName
            и результат будет возвращен как загруженный xml.
  aProcFinalize - имя подпрограммы завершения (финализации) в главном скрипте.
                  по умолчанию оно предопределено как Finalize.
                  в каждом скрипте должна быть подпрограмма Finalize, которая
                  должна выполнить операции завершения работы скрипта (чистка
                  ресурсов, закрытие окон и др).
  результат:
    либо входная XML из параметра aXml, либо, если указана опция отладки,
    то будет загружена XML из файла, указанного по конфигурации отладки.}
function InitializeMain( aXml: variant;
                         aTestFileName: string;
                         aProcFinalize: string = 'Finalize'): variant;
begin
  try
    InitializeDebug;        // инициализация модуля Un_Debug
    InitializeLog;   // инициализация модуля Un_Log

    InitializeSystem( aProcFinalize);   // инициализация модуля Un_System
//    InitializeUnVersionSupport;          // инициализация модуля Un_VersionSupport
    InitializeProgressControl;    // инициализация модуля контролов отображения прогресса
//    DecimalSeparator('.');
    Result := XmlTestTask( aXml, aTestFileName);  // загрузка/сохранение тестовой XML
    if VarIsNull( Result) then EXIT;

    except
      ExceptionLog( 'Сбой скрипта: "Tools\Un_Default.InitializeMain".');
  end;
end;

{~FinalizeMain
  завершение работы модулей в главном скрипте:
    1) завершение модуля отладки
    2) завершение модуля контролов прогрессов и сброс прогрессов.
  эта подпрограмма должна вызываться из подпрограммы Finalize целевого скрипта
  в последнюю очередь.}
procedure FinalizeMain;
begin
  try

    FinalizeDebug;
    // инициализируем контролы
    ShowProgress( 0);
    StatusBarSimpleText( '');
    // сбрасываем контролы прогресс/статус баров
    FinalizeProgressControl;
    except
      ExceptionLog( 'Сбой Tools\Un_Default.FinalizeMain;');
  end;
end;


begin
end.
