История изменений
Исправление bormant, (текущая версия) :
Для учета числа можно было сделать в более общем виде:
type
TGrNum = (gnSingle, gnDual, gnPlural);
TNumStr = array [TGrNum] of UnicodeString;
function GrN(n: Word): 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 = ('секунда', 'секунды', 'секунд');
...
WriteLn(
d, ' ', sDay[GrN(d)],
' ', hr, ' ', sHour[GrN(hr)],
' ', mn, ' ', sMin[GrN(mn)],
' ', sc, ' ', sSec[GrN(sc)]);
Исходная версия bormant, :
Для учета числа можно было сделать в более общем виде:
type
TGrNum = (gnSingle, gnDual, gnPlural);
TNumStr = array [TGrNum] of UnicodeString;
function GrN(n: Int64): 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 = ('секунда', 'секунды', 'секунд');
...
WriteLn(
d, ' ', sDay[GrN(d)],
' ', hr, ' ', sHour[GrN(hr)],
' ', mn, ' ', sMin[GrN(mn)],
' ', sc, ' ', sSec[GrN(sc)]);