Функции из RSLibrary.dll, упоминаемой в материалах обучения

Автор Сообщение
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 07.07.2013 15:22 Заголовок сообщения: Функции из RSLibrary.dll, упоминаемой в материалах обучения
Уважаемые коллеги,

В материалах обучения на странице http://scala.org.ru/training/ssrsandiscala/ispolzovanie-funktsii-kak-vyvesti-summu-propisyu/ приводится пример использования функции из библиотеки RSLibrary (автор библиотеки АВВ). Недавно один из участников спрашивал меня, какие параметры можно использовать для этой функции. Ниже привожу текст файла Class1.vb, содержащего все функции библиотеки:

Код:
Imports System.Math

Public Class fLib
    Private Skl As Byte

    Public Function NumStr(ByVal N As Double, ByVal rub As Byte) As String
        ‘   Представление числа прописью.
        ‘   Числа типа double
        ‘   При втором аргументе функции равном:
        ‘              0, вывод только числа прописью,
        ‘              1, дополнительно вывод "рублей" и "копеек"
        ‘              2, дополнительно вывод у.е. и сотых у.е.
        ‘              3, дополнительно вывод "долларов" и "центов"
        ‘              4, дополнительно вывод "ЕВРО" и "центов"
        ‘              5, дополнительно вывод "ГРИВНЫ" и "копейки" (на укр. языке)
        ‘17.10.2006    6, дополнительно вывод "РОССИЙСКИХ рублей" и "копеек"
        Dim s As String, R As String, K As String
        Dim t, u, v, w As Integer

        s = ""

        If N < 0 Then
            N = Abs(N)
            s = "минус"
        End If
        ‘——————————————————————————
        v = (N — Fix(N)) * 100                  ‘ Число копеек
        w = Val(Right(Format(v), 1))            ‘ Получить число единиц копеек

        N = Fix(N)                              ‘ Целое число рублей
        t = Val(Right(Format(N), 2))            ‘ Получить две последние цифры рублей
        u = Val(Right(t, 1))                    ‘ Получить число единиц рублей

        R = ""
        K = ""
        If t > 10 And t < 15 Then               ‘ Получить подпись для рублей
            Select Case rub
                Case 1
                    R = " рублей"
                Case 2
                    R = " у.е."
                Case 3
                    R = " долларов"
                Case 4
                    R = " евро"
                Case 5
                    R = " гривень"
                Case 6
                    R = " российских рублей"
            End Select
        ElseIf u = 1 Then
            Select Case rub
                Case 1
                    R = " рубль"
                Case 2
                    R = " у.е."
                Case 3
                    R = " доллар"
                Case 4
                    R = " евро"
                Case 5
                    R = " гривня"
                Case 6
                    R = " российский рубль"
            End Select
        ElseIf u > 1 And u < 5 Then
            Select Case rub
                Case 1
                    R = " рубля"
                Case 2
                    R = " у.е."
                Case 3
                    R = " доллара"
                Case 4
                    R = " евро"
                Case 5
                    R = " гривнi"
                Case 6
                    R = " российских рубля"
            End Select
        Else
            Select Case rub
                Case 1
                    R = " рублей"
                Case 2
                    R = " у.е."
                Case 3
                    R = " долларов"
                Case 4
                    R = " евро"
                Case 5
                    R = " гривень"
                Case 6
                    R = " российских рублей"
            End Select
        End If

        If v > 10 And v < 15 Then          ‘ Получить подпись для копеек
            Select Case rub
                Case 1, 6
                    K = " копеек"
                Case 2
                    K = "/100"
                Case 3, 4
                    K = " центов"
                Case 5
                    K = " копiйок"
            End Select
        ElseIf w = 1 Then
            Select Case rub
                Case 1, 6
                    K = " копейка"
                Case 2
                    K = "/100"
                Case 3, 4
                    K = " цент"
                Case 5
                    K = " копiйка"
            End Select
        ElseIf w > 1 And w < 5 Then
            Select Case rub
                Case 1, 6
                    K = " копейки"
                Case 2
                    K = "/100"
                Case 3, 4
                    K = " центов"
                Case 5
                    K = " копiйки"
            End Select
        Else
            Select Case rub
                Case 1, 6
                    K = " копеек"
                Case 2
                    K = "/100"
                Case 3, 4
                    K = " центов"
                Case 5
                    K = " копiйок"
            End Select
        End If

        ‘——————————————————————————
        If N >= 1000000000000.0# Then
            s = AddStr(s, NumStr2(Int(N / 1000000000000.0#), True, rub))
            Select Case Skl
                Case 0
                    s = AddStr(s, "триллион")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "триллион")
                    End Select
                Case 1
                    s = AddStr(s, "триллиона")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "триллиона")
                    End Select
                Case 2
                    s = AddStr(s, "триллионов")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "триллионов")
                    End Select
            End Select
            N = N — Int(N / 1000000000000.0#) * 1000000000000.0#
        End If

        If N >= 1000000000 Then
            s = AddStr(s, NumStr2(Int(N / 1000000000), True, rub))
            Select Case Skl
                Case 0
                    s = AddStr(s, "миллиард")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльярд")
                    End Select
                Case 1
                    s = AddStr(s, "миллиарда")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльярда")
                    End Select
                Case 2
                    s = AddStr(s, "миллиардов")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльярдiв")
                    End Select
            End Select
            N = N — Int(N / 1000000000) * 1000000000
        End If

        If N >= 1000000 Then
            s = AddStr(s, NumStr2(N \ 1000000, True, rub))
            Select Case Skl
                Case 0
                    s = AddStr(s, "миллион")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльйон")
                    End Select
                Case 1
                    s = AddStr(s, "миллиона")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльйона")
                    End Select
                Case 2
                    s = AddStr(s, "миллионов")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "мiльйонiв")
                    End Select
            End Select
            N = N Mod 1000000
        End If

        If N >= 1000 Then
            s = AddStr(s, NumStr2(N \ 1000, False, rub))
            Select Case Skl
                Case 0
                    s = AddStr(s, "тысяча")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "тисяча")
                    End Select
                Case 1
                    s = AddStr(s, "тысячи")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "тисяча")
                    End Select
                Case 2
                    s = AddStr(s, "тысяч")
                    Select Case rub
                        Case 5
                            s = AddStr(s, "тисяч")
                    End Select
            End Select
            N = N Mod 1000
        End If

        If N > 0 Then
            s = AddStr(s, NumStr2(N, True, rub))
        End If

        If s = "" Then
            s = "ноль"
            Select Case rub
                Case 5
                    s = "нуль"
            End Select
        ElseIf s = "минус" Then
            s = s + " ноль"
            Select Case rub
                Case 5
                    s = "мiнус нуль"
            End Select
        End If

        NumStr = StrConv(Mid(s, 1, 1), vbUpperCase) + Mid(s, 2, Len(s) — 1)
        If (rub) Then NumStr = NumStr & R & Format(v, " 00") & K

    End Function

    Public Function DateAsString(ByVal dd As Date) As String
        ‘Дата прописью
        Dim y As Integer, m As Integer, d As Integer
        Dim sy As String, sm As String, sd As String

        y = Year(dd)
        sy = CStr(y)

        d = Day(dd)
        sd = CStr(d)
        sd = Right("00" + sd, 2)

        m = Month(dd)
        Select Case m
            Case 1
                sm = "января"
            Case 2
                sm = "февраля"
            Case 3
                sm = "марта"
            Case 4
                sm = "апреля"
            Case 5
                sm = "мая"
            Case 6
                sm = "июня"
            Case 7
                sm = "июля"
            Case 8
                sm = "августа"
            Case 9
                sm = "сентября"
            Case 10
                sm = "октября"
            Case 11
                sm = "ноября"
            Case 12
                sm = "декабря"
            Case Else
                sm = ""
        End Select

        Return sd + " " + sm + " " + sy

    End Function

    Public Function GetValue(ByVal value As Object) As Object
        ‘Вернуть значение не NULL
        If value Is Nothing Then
            Return 0
        Else
            Return value
        End If
    End Function

    Private Function AddStr(ByVal S1 As String, ByVal S2 As String) As String
        If S1 = "" Then
            AddStr = S2
        ElseIf S2 = "" Then
            AddStr = S1
        Else
            AddStr = S1 + " " + S2
        End If
    End Function
    Private Function NumStr2(ByVal N As Double, ByVal male As Boolean, ByVal rub As Byte) As String
        Dim s As String
        s = ""
        If N >= 100 Then
            s = NumStr1(((N \ 100) * 100), male, rub)
            N = N Mod 100
        End If
        If N >= 20 Then
            s = AddStr(s, NumStr1(((N \ 10) * 10), male, rub))
            N = N Mod 10
        End If
        NumStr2 = AddStr(s, NumStr1(N, male, rub))
    End Function
    Private Function NumStr1(ByVal N As Double, ByVal male As Boolean, ByVal rub As Byte) As String
        Dim ReturnValue As String
        ReturnValue = ""
        Skl = 2
        Select Case N
            Case 100
                ReturnValue = "сто"
                Select Case rub
                    Case 5
                        ReturnValue = "сто"
                End Select
            Case 200
                ReturnValue = "двести"
                Select Case rub
                    Case 5
                        ReturnValue = "двiстi"
                End Select
            Case 300
                ReturnValue = "триста"
                Select Case rub
                    Case 5
                        ReturnValue = "триста"
                End Select
            Case 400
                ReturnValue = "четыреста"
                Select Case rub
                    Case 5
                        ReturnValue = "чотириста"
                End Select
            Case 500
                ReturnValue = "пятьсот"
                Select Case rub
                    Case 5
                        ReturnValue = "п’ятсот"
                End Select
            Case 600
                ReturnValue = "шестьсот"
                Select Case rub
                    Case 5
                        ReturnValue = "шiстсот"
                End Select
            Case 700
                ReturnValue = "семьсот"
                Select Case rub
                    Case 5
                        ReturnValue = "сiмсот"
                End Select
            Case 800
                ReturnValue = "восемьсот"
                Select Case rub
                    Case 5
                        ReturnValue = "вiсiмсот"
                End Select
            Case 900
                ReturnValue = "девятьсот"
                Select Case rub
                    Case 5
                        ReturnValue = "дев’ятисот"
                End Select
            Case 11
                ReturnValue = "одиннадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "одинадцять"
                End Select
            Case 12
                ReturnValue = "двенадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "дванадцять"
                End Select
            Case 13
                ReturnValue = "тринадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "тринадцять"
                End Select
            Case 14
                ReturnValue = "четырнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "чотирнадцять"
                End Select
            Case 15
                ReturnValue = "пятнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "п’ятнадцять"
                End Select
            Case 16
                ReturnValue = "шестнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "шiстнадцять"
                End Select
            Case 17
                ReturnValue = "семнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "сiмнадцять"
                End Select
            Case 18
                ReturnValue = "восемнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "вiсiмнадцять"
                End Select
            Case 19
                ReturnValue = "девятнадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "дев’ятнадцять"
                End Select
            Case 20
                ReturnValue = "двадцать"
                Select Case rub
                    Case 5
                        ReturnValue = "двадцять"
                End Select
            Case 30
                ReturnValue = "тридцать"
                Select Case rub
                    Case 5
                        ReturnValue = "тридцять"
                End Select
            Case 40
                ReturnValue = "сорок"
                Select Case rub
                    Case 5
                        ReturnValue = "сорок"
                End Select
            Case 50
                ReturnValue = "пятьдесят"
                Select Case rub
                    Case 5
                        ReturnValue = "п’ятдесят"
                End Select
            Case 60
                ReturnValue = "шестьдесят"
                Select Case rub
                    Case 5
                        ReturnValue = "ш_стдесят"
                End Select
            Case 70
                ReturnValue = "семьдесят"
                Select Case rub
                    Case 5
                        ReturnValue = "сiмдесят"
                End Select
            Case 80
                ReturnValue = "восемьдесят"
                Select Case rub
                    Case 5
                        ReturnValue = "вiсiмдесят"
                End Select
            Case 90
                ReturnValue = "девяносто"
                Select Case rub
                    Case 5
                        ReturnValue = "дев’яносто"
                End Select
            Case 1
                Skl = 0
                If male Then
                    ReturnValue = "один"
                    Select Case rub
                        Case 5
                            ReturnValue = "одна"
                    End Select
                Else
                    ReturnValue = "одна"
                    Select Case rub
                        Case 5
                            ReturnValue = "одна"
                    End Select
                End If
            Case 2
                Skl = 1
                If male Then
                    ReturnValue = "два"
                    Select Case rub
                        Case 5
                            ReturnValue = "двi"
                    End Select
                Else
                    ReturnValue = "две"
                    Select Case rub
                        Case 5
                            ReturnValue = "двi"
                    End Select
                End If
            Case 3
                Skl = 1
                ReturnValue = "три"
                Select Case rub
                    Case 5
                        ReturnValue = "три"
                End Select
            Case 4
                Skl = 1
                ReturnValue = "четыре"
                Select Case rub
                    Case 5
                        ReturnValue = "чотири"
                End Select
            Case 5
                ReturnValue = "пять"
                Select Case rub
                    Case 5
                        ReturnValue = "п’ять"
                End Select
            Case 6
                ReturnValue = "шесть"
                Select Case rub
                    Case 5
                        ReturnValue = "шiсть"
                End Select
            Case 7
                ReturnValue = "семь"
                Select Case rub
                    Case 5
                        ReturnValue = "сiм"
                End Select
            Case 8
                ReturnValue = "восемь"
                Select Case rub
                    Case 5
                        ReturnValue = "вiсiм"
                End Select
            Case 9
                ReturnValue = "девять"
                Select Case rub
                    Case 5
                        ReturnValue = "дев’ять"
                End Select
            Case 10
                ReturnValue = "десять"
                Select Case rub
                    Case 5
                        ReturnValue = "десять"
                End Select
        End Select
        Return ReturnValue
    End Function

End Class