If InStr(NameDOC, "11") Or InStr(Path1, "12") Then mName = "Документ1"
If InStr(NameDOC, "22") Then mName = "Документ2"
If InStr(NameDOC, "33") Then mName = "Документ3"
If InStr(NameDOC, "44") Then mName = "Документ4"
Можно ли записать через оператор Case?
Код:
Можно ли записать все это более красиво через оператор Case?
Case InStr(NameDOC, "11") Or InStr(Path1, "12")
mName = "Документ1"
Case InStr(NameDOC, "22")
mName = "Документ2"
Case InStr(NameDOC, "33")
mName = "Документ3"
Case InStr(NameDOC, "44")
mName = "Документ4"
End Select[/Highlight]Как-то так…Сам такую проблему решал несколько раз;насколько помню,удачно
Цитата: @pixo $oft
Можно,конечно!А что мешает?:)[Highlight=VBNET]Select Case True
Case InStr(NameDOC, "11") Or InStr(Path1, "12")
mName = "Документ1"
...
Case InStr(NameDOC, "11") Or InStr(Path1, "12")
mName = "Документ1"
...
Стал экспериментировать и не получилось. Тогда сделал так:
iss = False
Select Case iss
Case InStr(NameDOC, "11")
iss = True: mName = "Документ1"
...
End select
т.е., видимо, по условию True не работает, нужно обязательно указать какую-нить переменную.
Ну, с переменной оно, конечно, надёжнее, но у меня в подобных случаях и при использовании True или False код работал адекватно :)
If InStr(NameDOC, "11") Or InStr(Path1, "12") Then
mName = "Документ1"
ElseIf InStr(NameDOC, "22") Then
mName = "Документ2"
ElseIf InStr(NameDOC, "33") Then
mName = "Документ3"
ElseIf InStr(NameDOC, "44") Then
mName = "Документ4"
End If
Это громоздко и непредставительно.Автор топика получил свой ответ и остался им доволен–ему нужно было именно через Case
А вот такой вопрос.
И If...elseif и case перебирают все подряд, пока не наткнутся на выполнение условия.
А есть switch:
mName = Switch(InStr(NameDOC, "11") и т.д.
Т.е. выбирается нужный вариант сразу без перебора всех предыдущих (ненужных). Но вроде, в switch есть ограничение на кол-во вариантов. или это мне кажется? Если надо обработать 1000 вариантов, чем удобнее было бы производить выбор?
Спасибо.
0)этот оператор тоже перебирает всё подряд,только сия операция перебора скрыта в нём(инкаспуляция это вроде;поправьте меня,если я не прав:o)
1)насчёт ограничения не знаю,это надо смотреть в сторону ParamArray для Variant.А вот теперь подумайте сами:вам удобнее будет разбирать(читать) конструкцию,записаннуй в строчку и не влезающую в экран(комбинация со знаком "_" и переносом строки не катит–не так уж она удобна) или структурированную конструкцию Select case?
Я бы остановился на 2м…хотя для 1000 вариантов наверняка есть другой способ