Почему этот фрагмент кода не работает? - PullRequest
2 голосов
/ 12 августа 2011
Class GetDate
    Private internal_strDate
    Private internal_strDay
    Private internal_strMonth
    Private internal_strYear
    Private internal_Debug

    Public Property Set isdebug(ByRef vLine)
        internal_Debug = vLine
        WScript.Echo("in debug mode: " & internal_Debug) 
    End Property

    Public Property Get GetFormattedDate
        internal_strDate = CDate(Date)
        internal_strYear = DatePart("yyyy", internal_strDate)
        internal_strMonth = DatePart("m", internal_strDate)
        internal_strDay = DatePart("d", internal_strDate)

        If internal_strMonth < 10 Then
            internal_strMonth = "0" & internal_strMonth
        End If
        If internal_strDay < 10 Then
            internal_strDay = "0" & internal_strDay
        End If
        GetFormattedDate = internal_strYear & "-" & internal_strMonth & "-" & internal_strDay
    End Property
End Class

После определения класса у меня есть этот код, и он выдает ошибку.

Dim objYear
Set objYear = New GetDate
objYear.isdebug(True)

Ошибка говорит

в режиме отладки: ложная ошибка времени выполнения Microsoft VBScript (68, 1): объект не поддерживает это свойство или метод: 'isdebug'

По сути, я хочу иметь возможность установить для отладки значение true, а затем я собираюсь изменить свойство GetFormattedDate, чтобы проверить, включено ли значение «internal_Debug» и разрешено ли вводить дату вручную. (вместо получения даты автоматически)

Ответы [ 2 ]

4 голосов
/ 12 августа 2011

Убедитесь, что вы правильно создали экземпляр класса, например:

Dim objYear 
Set objYear = New GetDate
objYear.isdebug(True)

Обновление # 1

Я неправильно прочитал ваш код, isdebug - это свойство, изменитеваш класс немного, так что «isdebug» становится:

Public Property Let isdebug(ByRef vLine)
    internal_Debug = vLine
    WScript.Echo("in debug mode: " & internal_Debug) 
End Property

Затем вы используете его так:

objYear.isdebug = True

Или измените его на:

Public Sub isdebug(ByRef vLine)
    internal_Debug = vLine
    WScript.Echo("in debug mode: " & internal_Debug) 
End Sub

Тогда вы можете использовать это так:

objYear.isdebug(True)
1 голос
/ 12 августа 2011

isdebug является свойством, поэтому ваш код должен быть:

Dim objYear
Set objYear = New GetDate
objYear.isdebug = True

Edit:

Изменить

Public Property Set isdebug(ByRef vLine)

до

Public Property Let isdebug(ByRef vLine)

Property Set для объектов, а Property Let для типов значений.

...