Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Изменение окончаний у числительных Добавлено: 30.10.07 00:39  

Автор вопроса:  AlexDerS
Есть поле, в которое пользователь вносит целое число.
Как в зависимости от числа изменять окончания у числительных, чтобы было примерно так:
1 - час
2 - часа
5 - часов
250 - часов
251 - час

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 30.10.07 03:29
*11-*19 часов
*1 час
*2-*4 часа
*5-*0 часов
Вроде бы так. В качестве совпадения берется первое.

Ответить

Номер ответа: 2
Автор ответа:
 Yanex



ICQ: 387761649 

Вопросов: 32
Ответов: 169
 Web-сайт: Progr.Do.am
 Профиль | | #2
Добавлено: 30.10.07 12:11
Надо написать простенькую функцию, наподобие:

Public Function GetHourExt(iHour As Integer) As String

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-сайт: aleksey.nemiro.ru
 Профиль | | #3
Добавлено: 30.10.07 12:18
по-моему, в VB этого вообще нету

Select Case iHour
  Case 5 To 20
    'действительно нету :)
End Select

Ответить

Номер ответа: 4
Автор ответа:
 Yanex



ICQ: 387761649 

Вопросов: 32
Ответов: 169
 Web-сайт: Progr.Do.am
 Профиль | | #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-сайт: Progr.Do.am
 Профиль | | #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-сайт: aleksey.nemiro.ru
 Профиль | | #7
Добавлено: 30.10.07 12:37
НО! как узнать какая цифра последняя? (с регулярными выражениями я в VB не очень...)

Right$(CStr(iHour), 1)

Ответить

Номер ответа: 8
Автор ответа:
 AlexDerS



Вопросов: 37
Ответов: 61
 Профиль | | #8 Добавлено: 30.10.07 12:53
Вот что получилось в результате (если кому интересно):

    Function GetHourExt(ByVal iHour As Integer) As String
        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-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 30.10.07 19:02
Right$(CStr(iHour), 1)

Жжоте огнем. iHour mod 10

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам