powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RaiseEvent и Err.Raise стоит ли ТАК заморачиваться?
3 сообщений из 3, страница 1 из 1
RaiseEvent и Err.Raise стоит ли ТАК заморачиваться?
    #32624433
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуй All.
Решил тут простейший класс наваять. У него всего лишь одно свойство и пока только одно событие.

Сначала создал ему свойство Get и Let устанавливающее m_enmValue.
Затем "проименовал" его возможные Integer значения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Option Explicit

Enum enmIntParamName
    modeRead =  0 
    modeEdit
    modeAdd
    modeFind
End Enum
Для проверки корректного ввода параметра ввел дополнительные константы
Код: plaintext
1.
2.
Private Const enmIntParamNameMIN As Integer = modeRead
Private Const enmIntParamNameMAX As Integer = modeFind
Для парсинга решил сначала использовать Err.Raise, для этого определил константы для работы с пользовательскими ошибками:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 'CINTPARAM errors with description BEGIN --------------------------
 
Private Const CINTPARAM_ERR_SOURCE       As String = "cIntParam Object"
Private Const CINTPARAM_ERR_ERRNUMBASE   As Long = vbObjectError +  1000 

 ' Invalid Input Value:
 
Private Const CINTPARAM_ERR_INVALID_VALUE_IN _
    As Long = CINTPARAM_ERR_ERRNUMBASE +  1 
Private Const CINTPARAM_ERR_INVALID_VALUE_IN_DESC _
    As String = "Значение должно быть от " & enmIntParamNameMIN & _
        " до " & enmIntParamNameMAX & "."
 'CINTPARAM errors with description END ----------------------------
 

И оставшаяся часть модуля:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Event Changed(oldValue As enmIntParamName)
Private m_enmValue As enmIntParamName

 'Tools->Procedure Attributes->Item (Value)
 
 'Advanced->Procedure ID (Default) OK
 
Property Get Value() As enmIntParamName
    Value = m_enmValue
End Property

Property Let Value(ParamName As enmIntParamName)
    Dim old_Value As enmIntParamName
    
    If (ParamName < enmIntParamNameMIN) Or _
        (ParamName > enmIntParamNameMAX) Then
         'Можно было бы использовать стандартный номер VB Err:
 
         '380 - Invalid Property Value
 

        Err.Raise CINTPARAM_ERR_INVALID_VALUE_IN, CINTPARAM_ERR_SOURCE, _
            CINTPARAM_ERR_INVALID_VALUE_IN_DESC
    Else
        old_Value = m_enmValue
        m_enmValue = ParamName
        RaiseEvent Changed(old_Value)
    End If
End Property
...
Рейтинг: 0 / 0
RaiseEvent и Err.Raise стоит ли ТАК заморачиваться?
    #32624440
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот меня посетила мысль, а может вместо Err.Raise сделать что-то типа RaiseEvent Error(Number as long, Source as String, Description as String)
А потом там где этот объект будет использоваться в обработчике события
и делать парсинг или обрабатывать еще ошибки?
Но чувствую, что нагородил огород =)
Кто что думает по этому поводу?
...
Рейтинг: 0 / 0
RaiseEvent и Err.Raise стоит ли ТАК заморачиваться?
    #32624943
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, сам себе и ответил =)
Не имеет смысла в классе делать On Error GoTo ErrHandler и пихать туда свой RaiseEvent Err(Number, Source, Description). Err прекрасно справляется и так =)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RaiseEvent и Err.Raise стоит ли ТАК заморачиваться?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]