![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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;Последний раз редактировалось angvelem, 16.10.2012 в 00:24. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (16.10.2012)
| ||
|
#4
|
||||
|
||||
|
Спасибо большое!)))
|