{
     ведение логов + подпрограммы логирования исключения.
    по умолчанию лог не ведется.
}
var

  // флаг наличия исключения. при инициализации флаг сбрасвается, а при
  // выполнении оператора ExceptionLog - устанавливается в TRUE.
  // фактически - это фиксация первого сбоя скрипта.
  vLogException: boolean;
  // наличие критической ошибки
  IsCriticalError: boolean;


{~CriticalError
  включение критической ошибки операций импорта/экспорта.
  в результате, при завершении скрипта будет необходимо отобразить лог
  текущей операции (журнал FileInfo или FileTmp)
  даже если этих журналов не будет, все равно нужно предупредить о
  возникновении сбоя.}
procedure CriticalError;
begin

  IsCriticalError := TRUE;
end;

{~InitializeLog
  инициализация модуля логов: Un_Log}
procedure InitializeLog;
begin

  // пока сбоев нет
  vLogException   := FALSE;
  IsCriticalError := FALSE;
end;




{~LogMessage
  логирование сообщения xMsg и затем это сообщение отображается в модальном
  окне, вызванным как ShowMessage. }
procedure LogMessage( xMsg: string);
begin

  ShowMessage( xMsg);
end;


{~RaiseLog
 логирование сообщения xMsg с созданием исключения: raise(xExceptionMessage).}
procedure RaiseLog( xMsg, xExceptionMessage: string);
begin

//  ShowMessage( xMsg +#13#10 + xExceptionMessage);
  raise( xMsg +#13#10 + xExceptionMessage);
end;

{~ExceptionLog
  логирование сообщения xMsg и исключения (LastException)
  с трансляцией исключения дальше: raise(xExceptionMessage).}
procedure ExceptionLog( xMsg: string);
begin
  vLogException := TRUE;
  RaiseLog( xMsg, LastException.Message);
end;

procedure ExceptionProc( xMsg: string = '');
begin
  ExceptionLog( 'Сбой ' + xMsg);
end;




begin
end.
  
