Страница: 1 |
Страница: 1 |
Вопрос: Изменение окончаний у числительных
Добавлено: 30.10.07 00:39
Автор вопроса: AlexDerS
Есть поле, в которое пользователь вносит целое число.
Как в зависимости от числа изменять окончания у числительных, чтобы было примерно так:
1 - час
2 - часа
5 - часов
250 - часов
251 - час
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 30.10.07 03:29
*11-*19 часов
*1 час
*2-*4 часа
*5-*0 часов
Вроде бы так. В качестве совпадения берется первое.
Номер ответа: 2
Автор ответа:
Yanex
ICQ: 387761649
Вопросов: 32
Ответов: 169
Web-сайт:
Профиль | | #2
Добавлено: 30.10.07 12:11
Надо написать простенькую функцию, наподобие:
Select Case iHour
Case 1,21: GetHourExt = "час"
Case 2,3,4,22,23,24: GetHourExt = "часа"
Case 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20: GetHourExt = "часов"
End Select
End Function
Я не помню точно, как задать промежуток в Case (по-моему, в VB этого вообще нету), поэтому написал 5,6,7,8,... Должно работать.
Номер ответа: 3
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #3
Добавлено: 30.10.07 12:18
Select Case iHour
Case 5 To 20
'действительно нету
End Select
Номер ответа: 4
Автор ответа:
Yanex
ICQ: 387761649
Вопросов: 32
Ответов: 169
Web-сайт:
Профиль | | #4
Добавлено: 30.10.07 12:23
А, ну может быть. Я массовым Case не пользуюсь, уже подзабыл синтаксис...
Номер ответа: 5
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #5
Добавлено: 30.10.07 12:30
Единственная проблема в том, что количество часов не ограничевается 24...
Есть решение: проверять последнюю цифру в числе и уже её полставлять в GetHourExt,
НО! как узнать какая цифра последняя? (с регулярными выражениями я в VB не очень...)
Номер ответа: 6
Автор ответа:
Yanex
ICQ: 387761649
Вопросов: 32
Ответов: 169
Web-сайт:
Профиль | | #6
Добавлено: 30.10.07 12:33
cHour = Hour(Date)
Str = cStr(cHour)
StrP = Right(Str)
В StrP находится последняя цифра часа даты Date.
Номер ответа: 7
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #7
Добавлено: 30.10.07 12:37
Right$(CStr(iHour), 1)
Номер ответа: 8
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #8
Добавлено: 30.10.07 12:53
Вот что получилось в результате (если кому интересно):
If iHour >= 11 And iHour <= 20 Then
GetHourExt = "часов"
Else
Select Case Right$(CStr(iHour), 1)
Case 1 : GetHourExt = "час"
Case 2, 3, 4 : GetHourExt = "часа"
Case 0, 5 To 9 : GetHourExt = "часов"
End Select
End If
End Function
Номер ответа: 9
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #9
Добавлено: 30.10.07 12:56
Всем спасибо! )))
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 30.10.07 19:02
Жжоте огнем. iHour mod 10