Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вложение в условии else if elseif (http://forum.oszone.net/showthread.php?t=335605)

alado 05-07-2018 13:46 2820718

Вложение в условии else if elseif
 
Добрый день.
Подскажите пожалуйста, есть конструкция if else оформленная вот в таком стиле:
Код:

if
{

}
elseif
{

}
        if
        {

        }
        else
        {

        }
elseif
{

}

Получается, что вложенная конструкция в if и else не работает!


Более точнее код выглядит вот так:

Код:

elseif ($traceroute.SelectedItem -eq $ConfigProperty5)
        {
                $Summa.Enabled = $true
                $rasstreka.Text = $ConfigProperty6
                $rasstmore.Text = $ConfigProperty7
                $gateway.Text = $ConfigProperty8
                $uchastok.Text = $ConfigProperty202

                [array]$lstItemsmaterial = ("", "$global:ConfigProperty203", "$global:ConfigProperty204", "$global:ConfigProperty205")
                $material.Items.Clear();
                $material.Items.AddRange($lstItemsmaterial);
                $material.Text = $lstItemsmaterial[0].ToString();

                if ($material.SelectedItem -eq $ConfigProperty205)
                {

                        [array]$lstItemsvodoizmechenie = ("", `
                                "$global:ConfigProperty208", `
                                "$global:ConfigProperty209", `
                                "$global:ConfigProperty210", `
                                "$global:ConfigProperty211", `
                                "$global:ConfigProperty212")
                        $vodoizmechenie.Items.Clear();
                        $vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
                        $vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
                }
                elseif (($material.SelectedItem -eq $ConfigProperty203) -or ($material.SelectedItem -eq $ConfigProperty204))
                {

                        [array]$lstItemsvodoizmechenie = ("", `
                                "$global:ConfigProperty210", `
                                "$global:ConfigProperty211", `
                                "$global:ConfigProperty212")
                        $vodoizmechenie.Items.Clear();
                        $vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
                        $vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
                }
               

        }

В моем случае не работает:

Код:

if ($material.SelectedItem -eq $ConfigProperty205)
                {

                        [array]$lstItemsvodoizmechenie = ("", `
                                "$global:ConfigProperty208", `
                                "$global:ConfigProperty209", `
                                "$global:ConfigProperty210", `
                                "$global:ConfigProperty211", `
                                "$global:ConfigProperty212")
                        $vodoizmechenie.Items.Clear();
                        $vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
                        $vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
                }
                elseif (($material.SelectedItem -eq $ConfigProperty203) -or ($material.SelectedItem -eq $ConfigProperty204))
                {

                        [array]$lstItemsvodoizmechenie = ("", `
                                "$global:ConfigProperty210", `
                                "$global:ConfigProperty211", `
                                "$global:ConfigProperty212")
                        $vodoizmechenie.Items.Clear();
                        $vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
                        $vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
                }


Kazun 05-07-2018 14:08 2820721

Получается, что вложенная конструкция в if и else не работает! - Конструкция объвлена неправильно, поэтому и не работает.

About If - https://docs.microsoft.com/en-us/pow...w=powershell-6

Код:

$a = 10
$obj = 101

if($a -eq 1) {
        1
} elseif($a -eq 10) {
        "Inside elseif"
        if($obj -gt 100) {
                "`t->Inside if"
                "`t`tMore than 100"
        } else {
                "Less than 100"
        }
} else {
        "Unknown"
}

Вывод:
Код:

Inside elseif
        ->Inside if
                More than 100

То что привели, какой-то отрывок кода без $traceroute, $ConfigProperty205, $material никак не облегчает понимание. Приводите весь код.

alado 05-07-2018 18:17 2820744

Цитата:

Цитата Kazun
Приводите весь код. »

Пишу в PowerShell Studio, весь код на экспорте занимает 32 тысячи строк!

YuS_2 05-07-2018 18:36 2820748

Цитата:

Цитата alado
Пишу в PowerShell Studio, весь код на экспорте занимает 32 тысячи строк! »

Так весь вопрос в том, что конструкция не работает не потому, что во внутреннем коде powershell ошибка, а потому, что ошибка поселилась в Вашем коде.
Вы привели код частично, где нет ни значений используемых переменных/объектов, ни законченного кода, чтобы его проверить, ни результата выполнения кода и выдаваемой ошибки... поэтому вопрос Ваш, с большой вероятностью, канет в Лету.

alado 09-07-2018 09:14 2821104

Ссылка на скачивание https://yadi.sk/d/UFr-nA763YwvFK , в тему вложить как вложение или как текст у меня не получилось, так как существуют ограничения на такой объем!

Kazun 09-07-2018 10:51 2821111

Проблема в скрипте в формировании материала, $material.SelectedItem - нельзя выбрать, потому что в этом блоке идет его формирование и всегда будет пусто.

Выбираем маршрут, разово заполняется материал, добавляем событие на выбор материала и только потом можно выполнить блок if ($material.SelectedItem -eq $ConfigProperty205).

Как пример добавляю,например, нa 5126:

Код:

$material.add_SelectedValueChanged({
        if($material.SelectedItem -eq $ConfigProperty205) {
            msgbox $material.SelectedItem
        }
    })




Т.е. надо продумать логику в скрипте, как пользователь будет выбирать материал с последующими изменениями переменной $vodoizmechenie

alado 09-07-2018 11:40 2821120

Kazun, спасибо. Не додумал сам до SelectedValueChanged. По вопросу логики буду дальше думать.

YuS_2 09-07-2018 12:58 2821132

Цитата:

Цитата alado
Ссылка на скачивание »

Тогда вопрос:
А где в этом файле та часть кода, которая не работает:
Цитата:

Цитата alado
В моем случае не работает: »

?

Ну и есть строки, начиная с 3817, в которых присутствует обращение к несуществующей переменной $dir, она появляется в строке 11977... это, как минимум, приведет к перманентному невыполнению условий.
И ещё в коде присутствует обращение к базе данных, в формате .xlsx, его бы тоже не мешало для полноты картины обозначить. Реальные данные, естественно, не нужны...


Время: 22:23.

Время: 22:23.
© OSzone.net 2001-