|
|||||||
Модуль класса для работы с внешними устройствами (побитная обработка данных)
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - msa.polarcom.ru - 16 Система
Запись: xintrea/mytetra_db_adgaver_new/master/base/15320187289h7q9yriqp/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Модуль класса для работы с внешними устройствами (побитная обработка данных)Прислал: Дмитрий Сонных sonni-dim@mail.ru Вашему вниманию предлагается модуль класса ByteBooolean. Option Compare Database Option Explicit Private bByte As Byte Private bMinus As Byte '============================================================= 'Модуль класса ByteBoolean - автор Дмитрий Сонных (sonni-dim@mail.ru) '------------------------------------------------------------- 'За основу взят модуль ByteBoolean Катцына Антона 'c www.vbrussian.com раздел примеры. 'Я добавил пару новых свойств и изменил индексы массива '------------------------------------------------------------- 'Создайте модуль типа Class, назовите его ByteBoolean, скопируйте 'в него этот текст, работайте '============================================================= 'Класс использует переменную типа Byte для хранения восьми 'переменных типа Boolean. 'SetByte - Устанавливает бит 0-7 значением 1 или 0 '(если Value = 0 то нулем, если нет то 1) 'GetByte - возвращает бит 0-7 'TrueIsMinus1 - свойство которое говорит, что возвращать, при 'значении 1(Например True в VB это -1 и что бы было сходство с 'Boolean ,при влюченном свойстве, 1 будет возвращатся,как -1) '============================================================ Public Sub SetByte(Index As Byte, Value As Integer) 'Устанавливает значение указанного бита в 0 или 1 On Error GoTo erro1 If Value = 0 Then bByte = bByte And Not (2 ^ (Index)) Else bByte = bByte Or (2 ^ (Index)) End If exit_SetByte: Exit Sub erro1: 'MsgBox Err.Description Err.Raise 666, , "ООшибка записи в ByteBoolean!" _ & " Проверьте правильность посылаемых данных!" Resume exit_SetByte End Sub '---------------------------------------------------------- Public Function GetByte(Index As Byte) 'Возвращает значение запрошенного бита Dim a On Error GoTo erro2 a = bByte And (2 ^ (Index)) If a Then a = 1 If a = 0 Or (bMinus = 0 And a = 1) Then GetByte = a Else GetByte = -a End If Exit Function erro2: Err.Raise 666, , "Ошибка чтения из ByteBoolean!" _ & " Проверьте правильность посылаемых данных!" End Function '----------------------------------------------------------- Public Property Let ValueByte(ByVal NewByteValue As Byte) 'Задает новое значение массива в виде целого числа (0 - 255) bByte = NewByteValue End Property '----------------------------------------------------------- Public Property Get ValueByte() As Byte 'Выдает значение массива в виде целого числа (0 - 255) ValueByte = bByte End Property '----------------------------------------------------------- Public Property Get TrueIsMinus1() As Boolean If bMinus = 0 Then TrueIsMinus1() = False Else TrueIsMinus1() = True End If End Property '------------------------------------------------------------ Public Property Let TrueIsMinus1(ByVal vNewValue As Boolean) If vNewValue Then bMinus = 1 Else bMinus = 0 End If End Property |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|