Что нового

If и Not. Скрипт работает не так, как надо

Athook

Новичок
Сообщения
5
Репутация
2
Надо чтобы работало так: если $Ini2 не равен 0, 5, 10, 15, 20, то в ini-файле перезаписывается значение параметра Min1 на 0.
А работает так: всегда перезаписывается значение параметра Min1 на 0.

Код:
$Dir2 = @ScriptDir & "\ScanIP.ini"

If Not FileExists($Dir2) Then IniWriteSection($Dir2, "Settings - ScanIP", _
"Start1=Вкл." & @CRLF & "Min1=0" & @CRLF & "Sec1=15")

$Ini2 = IniRead($Dir2, "Settings - ScanIP", "Min1", "")

; Если $Ini2 не равен 0, 5, 10, 15, 20, то в ini-файле перезаписывается значение параметра Min1 на 0.
If Not ($Ini2 = "0" And $Ini2 = "5" And $Ini2 = "10" And $Ini2 = "15" _
And $Ini2 = "20") Then IniWrite($Dir2, "Settings - ScanIP", "Min1", "0")


P.S.: Извините, если не правильно назвал тему. На ум больше ничего не пришло...
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Код:
$Dir2 = @ScriptDir & "\ScanIP.ini"

If Not FileExists($Dir2) Then IniWriteSection($Dir2, "Settings - ScanIP", _
"Start1=Вкл." & @CRLF & "Min1=0" & @CRLF & "Sec1=15")

$Ini2 = IniRead($Dir2, "Settings - ScanIP", "Min1", "")

; Если $Ini2 не равен 0, 5, 10, 15, 20, то в ini-файле перезаписывается значение параметра Min1 на 0.
If Not $Ini2 = "0" And Not $Ini2 = "5" And Not $Ini2 = "10" And Not $Ini2 = "15" And Not $Ini2 = "20" Then
	IniWrite($Dir2, "Settings - ScanIP", "Min1", "0")
EndIf
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Athook
Есть небольшое правило, если нужно инвертировать перечисление равенств в скобках с And, то они должны быть Or и наоборот, если были Or они должны быть And.
Причина проста, например если все выражения True, то есть нужно чтобы все были True, то сработает, это значит что не должно быть ни одного False, далее при инвертировании условие работает так, если хоть одно False, то это уже не так как требуется, то есть нужно уже использовать Or, чтобы по единственному False признать выражение неверным.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Код:
;------------------------------------------------------------------------------
Switch $Ini2
	Case 0,5,10,15,20
		
	Case Else
		IniWrite($Dir2, "Settings - ScanIP", "Min1", "0")
EndSwitch
;------------------------------------------------------------------------------
If Not ($Ini2 = "0" Or $Ini2 = "5" Or $Ini2 = "10" Or $Ini2 = "15" _
Or $Ini2 = "20") Then IniWrite($Dir2, "Settings - ScanIP", "Min1", "0")
;------------------------------------------------------------------------------
 
Автор
A

Athook

Новичок
Сообщения
5
Репутация
2
Spyhunter
Ваш вариант не перезаписывает значение параметра... :(


Добавлено:
Сообщение автоматически объединено:

Заменил And на Or. Теперь работает так, как надо. :ok:

Код:
$Dir2 = @ScriptDir & "\ScanIP.ini"

If Not FileExists($Dir2) Then IniWriteSection($Dir2, "Settings - ScanIP", _
"Start1=Вкл." & @CRLF & "Min1=0" & @CRLF & "Sec1=15")

$Ini2 = IniRead($Dir2, "Settings - ScanIP", "Min1", "")

; Если $Ini2 не равен 0, 5, 10, 15, 20, то в ini-файле перезаписывается значение параметра Min1 на 0.
If Not ($Ini2 = "0" Or $Ini2 = "5" Or $Ini2 = "10" Or $Ini2 = "15" _
Or $Ini2 = "20") Then IniWrite($Dir2, "Settings - ScanIP", "Min1", "0")
 
Верх