Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: teplocom от 16 Февраля 2023, 15:43:24

Название: Работа с архивом. Время наработки оборудования. Пример кода склонения "день"
Отправлено: teplocom от 16 Февраля 2023, 15:43:24
Может будет кому-то полезно
Написал дополнение примера с руководства по скриптам: Работа с архивом. Время наработки оборудования (https://simple-scada.com/help/script/archivetimeon.html?q=DaysBetween)

, для отображения времени наработки оборудования в днях, которое позволяет отображать в текстовом поле правильное склонение слова ДЕНЬ (дней, дня):

Код: (delphi)
var
  aText: TM_Text;
  aDay, aDayWord: string;
  aModDay10,aModDay100,aBetwDay: Integer;

    function myFormat(AVal: Integer; aSymbols: Byte): string;
    begin
      Result := IntToStr(AVal);
      while Length(Result) < aSymbols do
        Result := '0' + Result;
    end;
  begin
  if not (Sender is TM_Text) then Exit;
  aText := TM_Text(Sender);
  SetTimeFormat('hh:mm');
  if YearOf(aText.AsDateTime) < 2022 then
        begin
          aBetwDay := DaysBetween(aText.AsDateTime, 0);
          aDay := myFormat(aBetwDay, 3);
          aModDay10 := aBetwDay Mod 10;
          aModDay100 := aBetwDay Mod 100;
        if (aModDay100>10) AND (aModDay100<15) then aDayWord:='дней'
        else
        case {DaysBetween(aText.AsDateTime, 0)} aModDay10 of
        0,5..9: aDayWord:='дней';
        1: aDayWord:='день';
        2..4: aDayWord:='дня';
        else aDayWord:='ошибка'
        end;
    aText.Text := aDay+' '+aDayWord+' '+ TimeToStr(aText.AsDateTime);
  end else
    aText.Text := 'подождите расчет';
end.