Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Работа с архивом. Время наработки оборудования. Пример кода склонения "день"  (Прочитано 2648 раз)

teplocom

  • Новичок
  • *
  • Сообщений: 47
  • с чувством уверенности в завтрашнем дне
    • Просмотр профиля
Может будет кому-то полезно
Написал дополнение примера с руководства по скриптам: Работа с архивом. Время наработки оборудования

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

Код: (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.