powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Принадлежность переменной к множеству
8 сообщений из 8, страница 1 из 1
Принадлежность переменной к множеству
    #39811156
Фотография VistaSV30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Подскажите есть в VB возможность проверить, что переменная принадлежит к множеству значений?
Вместо
Код: vbnet
1.
If i=1 Or i=5 Or i=7 Then ...




Возможно ли написать, что-то типа
Код: vbnet
1.
If i in(1, 5, 7) Then ...




Спасибо!
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811167
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VistaSV30, как вариант
Код: vbnet
1.
2.
3.
4.
5.
6.
...
Select Case i
    Case 1, 5, 7, 10 to 20'последнее интервал полностью с 10 до 20 включительно
        
End Select
...
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811188
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6400575
В данном примере инструкция Select Case используется для анализа значения переменной. Второе предложение Case содержит значение анализируемой переменной и следовательно выполняется только инструкция, связанная с этим предложением.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim Number
Number = 8	' Инициализирует переменную.
Select Case Number	' Анализирует число.
Case 1 To 5	' Число между 1 и 5.
	Debug.Print "Между 1 и 5"
' Это предложение Case является единственным истинным.
Case 6, 7, 8	' Число между 6 и 8.
	Debug.Print "Между 6 и 8"
Case Is > 8 And Number < 11	' 9 или 10.
Debug.Print "Больше 8"
Case Else	' Другие значения.
	Debug.Print "Вне интервала 1 -- 10"
End Select
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811221
VistaSV30Возможно ли написать, что-то типа
Код: vbnet
1.
If i in(1, 5, 7) Then ...

В Аксе можно и так:
Код: vbnet
1.
If EVal(i & " In (1, 5, 7)") Then ...


Удобно, если список вариантов у вас в переменной.
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811351
Фотография VistaSV30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем!
Пока остановлюсь на использовании Case
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811464
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у себя в проекте использую такую функцию
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Function InSetInner(spKey As Variant, apArgs As Variant) As Boolean
 Dim bvIsNull As Boolean
 Dim i As Integer
 
 If IsEmpty(spKey) Then spKey = Null
 bvIsNull = IsNull(spKey)
 InSetInner = True
 For i = LBound(apArgs) To UBound(apArgs)
  If IsArray(apArgs(i)) Then
   If InSetInner(spKey, apArgs(i)) Then Exit Function
  Else
   If apArgs(i) = spKey Or (bvIsNull And (IsNull(apArgs(i)) Or IsEmpty(apArgs(i)))) Then Exit Function
  End If
 Next
 InSetInner = False
End Function

Function InSet(spKey As Variant, ParamArray apArgs() As Variant) As Boolean
 Dim v As Variant
 v = apArgs
 InSet = InSetInner(spKey, v)
End Function



Использовать можно так

Код: vbnet
1.
If InSet(i, 1, 5, 7) Then...



В качестве параметра можно передать массив в том числе и многомерный. В отличии от нормальной тритичной логики в этой функции inSet(Null,Null) выдаст True. Значения Empty рассматриваются как Null.
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39811610
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111,

А для чего у вас 2 функции используются?
...
Рейтинг: 0 / 0
Принадлежность переменной к множеству
    #39812270
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

Для унификации работы с массивами
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Принадлежность переменной к множеству
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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