LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

{$codepage utf8}
uses SysUtils, DateUtils;

type
  TGrNum = (gnSingle, gnDual, gnPlural);
  TNumStr = array [TGrNum] of UnicodeString;

function GrN(n: LongWord): TGrNum;
begin
  Result := gnPlural;
  if not (n mod 100 in [5..20]) then
    case n mod 10 of
      1: Result := gnSingle;
      2..4: Result := gnDual;
    end;
end;

const
  sDay:   TNumStr = ('день', 'дня', 'дней');
  sHour:  TNumStr = ('час', 'часа', 'часов');
  sMin:   TNumStr = ('минута', 'минуты', 'минут');
  sSec:   TNumStr = ('секунда', 'секунды', 'секунд');
var
  df: Int64;
  d, h, m, s: Word;
begin
  df := SecondsBetween(Now, EndOfTheYear(Now)) + 1;
  WriteLn('До нового года ', df, ' ', sSec[GrN(df mod 100)]);
  d := df div 86400; df := df mod 86400;
  h := df div 3600;  df := df mod 3600;
  m := df div 60;
  s := df mod 60;
  WriteLn('или ', d, ' ', sDay[GrN(d)], ' ', h, ' ', sHour[GrN(h)],
    ' ', m, ' ', sMin[GrN(m)], ' ', s, ' ', sSec[GrN(s)]);
end.

Исходная версия bormant, :

{$codepage utf8}
uses SysUtils, DateUtils;

type
  TGrNum = (gnSingle, gnDual, gnPlural);
  TNumStr = array [TGrNum] of UnicodeString;

function GrN(n: LongWord): TGrNum;
begin
  Result := gnPlural;
  if not (n mod 100 in [5..20]) then
    case n mod 10 of
      1: Result := gnSingle;
      2..4: Result := gnDual;
    end;
end;

const
  sDay:   TNumStr = ('день', 'дня', 'дней');
  sHour:  TNumStr = ('час', 'часа', 'часов');
  sMin:   TNumStr = ('минута', 'минуты', 'минут');
  sSec:   TNumStr = ('секунда', 'секунды', 'секунд');
var
  df: Int64;
  d, hr, mn, sc: Word;
begin
  df := SecondsBetween(Now, EndOfTheYear(Now)) + 1;
  WriteLn('До нового года ', df, ' ', sSec[GrN(df mod 100)]);
  d  := df div 86400; df := df mod 86400;
  hr := df div 3600;  df := df mod 3600;
  mn := df div 60;
  sc := df mod 60;
  WriteLn('или ', d, ' ', sDay[GrN(d)], ' ', hr, ' ', sHour[GrN(hr)],
    ' ', mn, ' ', sMin[GrN(mn)], ' ', sc, ' ', sSec[GrN(sc)]);
end.