|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Изменение окончания слова
Здравствуйте форумчане! Возник такой вопрос, как изменить окончание слова "файл, файла, файлов" за счет их количества?
Вот что у меня получается: Код:
function CountFiles(Col: Integer): string; var Count: String; LastNumber: Integer; begin Count := IntToStr(Col); LastNumber := StrToInt(Count[Length(Count)]); if LastNumber = 0 then Result := Col + ' файлов' else if LastNumber = 1 then Result := Col + ' файл' else if LastNumber in [2..4] then Result := Col + ' файла' else if LastNumber in [5..9] then Result := Col + ' файлов'; end; |
#2
|
||||
|
||||
Цитата:
Код:
function Rodov(Param: Integer; S0, S1, S2: String; aWord: String = ''): String; begin if (Param mod 100) in [11..19] then Param:=0; case Param mod 10 of 1 :Result:=aWord + S1; 2..4:Result:=aWord + S2 else Result:=aWord + S0 end; end; Код:
ShowMessage(IntToStr(Col) + ' ' + Rodov(Col, 'файлов', 'файл', 'файла')); // или так: ShowMessage(IntToStr(Col) + Rodov(Col, 'ов', '', 'а', ' файл')); p.s. Почему я эту функцию назвал именно так - не помню. Уже больше 10 лет прошло с тех пор... |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
sariman (16.10.2012)
|
#3
|
||||
|
||||
Чем case не устраивает?
Код:
function CountFiles(Col: Integer): string; var Count: String; LastNumber: Integer; begin Count := IntToStr(Col); LastNumber := StrToInt(Count[Length(Count)]) mod 10; case LastNumber of 0, 5..9 : Result := Col + ' файлов'; 1 : Result := Col + ' файл'; 2..4 : Result := Col + ' файла'; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 16.10.2012 в 00:24. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (16.10.2012)
|
#4
|
||||
|
||||
Спасибо большое!)))
|