Что нового

Ветвление событий в зависимости от условий

Alkantel

Новичок
Сообщения
45
Репутация
1
Добрый вечер! Есть ли другие возможности ветвления событий кроме "If...Else...EndIf"? Есть код, пока правда в голове, в котором очень много условий. Хотелось бы знать есть ли возможность написать его без кучи вложенных "If...Else...EndIf"? Может есть литература какая-то по правильному структурированию кода, или примеры. Прошу знающих откликнуться.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
Switch
Select
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
Garrett сказал(а):
Это мне тоже знакомо. Код получается полее понятным, но заставляет писать много дублирующих строк. Может я прошу невозможного, я это прекрасно понимаю. Но может литература есть, даже по другим языкам, что поможет более правильно оформить условия.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Если сто условий,то их придётся все написать и перебрать.и тут не в языке дело.покажите пример кода
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
joiner сказал(а):
Если сто условий,то их придётся все написать и перебрать.и тут не в языке дело.
Ну вот этого то я и боялся. Ну значит так тому и быть.
Пример кода, ну вот это, например
Код:
$OSArch = @OSArch
$hRead = FileReadLine("Param.ini")
$hSearch =""

If $CmdLine[0] = 0 Then
	$hSearchAll = FileFindFirstFile("Setup*x32-64.exe")
	if $hSearchAll = 1 Then
		$hSearch = $hSearchAll
	ElseIf $hSearchAll = -1 Then
		Select
		Case $OSArch = "x64"
			If FileFindFirstFile("Setup*x64.exe") = 1 Then
				$hSearch = FileFindFirstFile("Setup*x64.exe")
			Else
				$hSearch = FileFindFirstFile("Setup*x32.exe")
			EndIf
		Case $OSArch = "x86"
			$hSearch = FileFindFirstFile("Setup*x32.exe")
		Case Else
			MsgBox(4096, "Error", "Не найден файл")
		EndSelect
	EndIf
Else
	$hSearch = FileFindFirstFile("Setup*" & $CmdLine[1] & ".exe")
EndIf

$sName = FileFindNextFile($hSearch)
RunWait($sName & " " & $hRead)

$SearchFinish = FileFindFirstFile("Finish*.exe")

If $SearchFinish = 1 Then
   $sNameFinish = FileFindNextFile($SearchFinish)
   RunWait($sNameFinish)
Else
   Exit
EndIf

Это старый код, я его уже порядком сократил. Но это то, о чем я говорю: If, If, If и еще раз If. Ну да ладно. Что-то будем думать.
Всем спасибо за ответы.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
OffTopic:
Alkantel
Главное, продумать логику программы.
Иной раз лучше действовать методом от противного, а не перебирать все возможные варианты.
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
Garrett сказал(а):
OffTopic:
Alkantel
Иной раз лучше действовать методом от противного, а не перебирать все возможные варианты.
Хм, попробую. Еще раз спасибо.
 
Верх