В чём ошибка?
Это по типу принудительного исполнения следующего условия Case следуемого за текущим условием Case. При этом валидность самого условия не имеет значение.
$msg = ""
$szName = InputBox(Default, "Пожалуйста, введите букву.", "", " M", Default, Default, Default, Default, 10)
Switch @error
Case 2
$msg = "Время истекло. "
ContinueCase
Case 1; Если время истекло, то добавится фраза "Скрипт завершает свою работу.", иначе в $msg будет просто "Скрипт завершает свою работу."
$msg &= "Скрипт завершает свою работу."
Case 0
Switch $szName
Case "у", "е", "ы", "а", "о", "э", "я", "и", "ю"
$msg = "Гласная!"
Case Else
$msg = "Не гласная!"
EndSwitch
Case Else
$msg = "Другая ошибка вызванная неправильным указанием параметров функции."
EndSwitch
MsgBox(4096, Default, $msg)
While 1
Switch GUIGetMsg()
Case $ok
; блок проверки по кнопке ОК
ContinueCase
Case -3
GUISetState(@SW_ENABLE, $Gui)
GUIDelete($Gui1)
ExitLoop
EndSwitch
WEnd
И в справке ContinueCase написано верно.
А где в справке в Select и Switch упоминание ContinueCase?Значит неверна справка к Select и Switch.
Для меня он не избыточный, я указал пример использования. Аналогично и могу переделать выш пример:в таком виде ContinueCase оператор избыточный
$var = 4
Select
Case $var > 2
ConsoleWrite('-> Case :' & $var & ' > 2' & @CRLF)
If $var > 5 Then ConsoleWrite('-> Case :' & $var & ' > 5' & @CRLF)
Case $var > 5
ConsoleWrite('-> Case :' & $var & ' > 5' & @CRLF)
Case Else
ConsoleWrite('-> Case Else' & @CRLF)
EndSelect
Для меня он не избыточный, я указал пример использования.
$var = 4
Select
Case $var > 2
ConsoleWrite('-> Case :' & $var & ' > 2' & @CRLF)
If $var > 5 Then ContinueCase
Case $var > 5
ConsoleWrite('-> Case :' & $var & ' > 5' & @CRLF)
Case Else
ConsoleWrite('-> Case Else' & @CRLF)
EndSelect
Да, но код бывает длинным и копипастить простыню не хочется, уж лучше функцию написать и вызывать из под CaseНо он легко заменим простым копипастом вместо ContinueCase кода из следующего Case
asdf8а так?
Фактически если сработал предыдущий Case, то Case Else уже не сработает, а продолжить подвыражение также можно:то сработал бы еще случай Case Else
$var = 6
Select
Case $var > 2
ConsoleWrite('-> Case :' & $var & ' > 2' & @CRLF)
If $var > 5 Then ContinueCase
Case $var > 5
ConsoleWrite('-> Case :' & $var & ' > 5' & @CRLF)
ContinueCase
Case Else
ConsoleWrite('-> Case Else' & @CRLF)
EndSelect
на офсайте можно предложить создать новую функцию, но думаю они спросят для какого случая и покажут пример использования имеющимися функциями. А усложнять Select и Switch теряя скорость её работы просто так не согласятся.если, никого не смущает подобная работа ContinueCase - я, больше вопросов не имею
Фактически если сработал предыдущий Case, то Case Else уже не сработает, а продолжить подвыражение также можно:
$var = 4
$iFlag = 1
Select
Case $var > 2
$iFlag = 0
ConsoleWrite('-> Case :' & $var & ' > 2' & @CRLF)
ContinueCase
Case $var > 5
If $var > 5 Then
$iFlag = 0
ConsoleWrite('-> Case :' & $var & ' > 5' & @CRLF)
EndIf
ContinueCase
Case $var > 10
If $var > 10 Then
$iFlag = 0
ConsoleWrite('-> Case :' & $var & ' > 10' & @CRLF)
EndIf
ContinueCase
Case Else
If $iFlag Then
ConsoleWrite('-> Case Else' & @CRLF)
EndIf
EndSelect
на офсайте можно предложить создать новую функцию, но думаю они спросят для какого случая и покажут пример использования имеющимися функциями.
Разве это правильно? Два раза проверять одно и тоже...
А вот так?