
16.10.2012, 00:21
|
 |
Профессионал
|
|
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
|
|
Цитата:
Сообщение от sariman
Здравствуйте форумчане! Возник такой вопрос, как изменить окончание слова "файл, файла, файлов" за счет их количества?
Вот что у меня получается:
Код:
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;
Однако, проблема в том, что если будет диапазон от 11 до 14, у меня написано будет файл и файла, потому что я использую только последнюю цифру, я в строках не очень силен, поэтому прошу помощи, заранее спасибо.
|
Вот моя древнейшая функция для этого, которую я использую до сих пор:
Код:
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 лет прошло с тех пор... 
|