Что нового

Цикл работает неккоректно. в чём может быть причина?

Math

Новичок
Сообщения
85
Репутация
1
Цикл работает неккоректно.

Структура программы такая:

Код:
$vsego = IniRead($ConfigINI, "vsego", "vsego", "0")

;операторы
 
   for $i = 1 to $vsego
				$enable = IniRead($ConfigINI, "shag"&string($i), "enable", "0")
				;переменные
				
		If $enable = 1 Then
			IniWrite($LogINI, "log", $shag_imya, " ВКЛЮЧЕН!")
			;операторы	
		Else 
			IniWrite($LogINI, "log", $shag_imya, " ОТКЛЮЧЕН!")
		EndIf
    Next
MsgBox(0, "FFP", "Работа сделана!")


И файл с настройками ($ConfigINI) :

[vsego]
vsego=10

[shag1]
enable=1
;параметры

[shag2]
enable=1
;параметры

[shag3]
enable=1
;параметры

[shag4]
enable=1
;параметры

[shag5]
enable=1
;параметры

[shag6]
enable=1
;параметры

[shag7]
enable=1
;параметры

[shag8]
enable=1
;параметры

[shag9]
enable=1
;параметры

[shag10]
enable=1
;параметры

При этом, если у всех "объектов" shag параметр enable=1, то цикл выполняет shag1, и затем сразу shag10 (при этом в логе пишется только 2 этих шага).

Если у "объектов" shag1 и shag10 поставить параметр enable=0, то выполняется только шаг 2. После этого пишет "Работа сделана!" (при этом в логе пишется, что shag1 и shag10 отключены, а shag2 включен).

В чём может быть причина такой работы?
 

phallic

Новичок
Сообщения
6
Репутация
1
У меня все норм. В лог всегда попадают все шаги (или я не понял вопроса).
Если первый и последний 0:
[log]
shag_1= ОТКЛЮЧЕН!
shag_2= ВКЛЮЧЕН!
shag_3= ВКЛЮЧЕН!
shag_4= ВКЛЮЧЕН!
shag_5= ВКЛЮЧЕН!
shag_6= ВКЛЮЧЕН!
shag_7= ВКЛЮЧЕН!
shag_8= ВКЛЮЧЕН!
shag_9= ВКЛЮЧЕН!
shag_10= ОТКЛЮЧЕН!
Если все 1:
[log]
shag_1= ВКЛЮЧЕН!
shag_2= ВКЛЮЧЕН!
shag_3= ВКЛЮЧЕН!
shag_4= ВКЛЮЧЕН!
shag_5= ВКЛЮЧЕН!
shag_6= ВКЛЮЧЕН!
shag_7= ВКЛЮЧЕН!
shag_8= ВКЛЮЧЕН!
shag_9= ВКЛЮЧЕН!
shag_10= ВКЛЮЧЕН!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
IniRead возвращает строку, а не число, поэтому сравнивай со строкой, или переводи строку в число
а)
Код:
If $enable = '1' Then

б)
Код:
If Int($enable) = 1 Then
 

shakur

Осваивающий
Сообщения
76
Репутация
24
IniRead возвращает строку, а не число, поэтому сравнивай со строкой, или переводи строку в число
так тоже работает
Код:
If $enable = 1 Then

Код работает не знаю почему у Вас возникли проблемы :scratch:
Код:
$vsego = IniRead("conf.ini", "vsego", "vsego", "0")

;операторы
 
   for $i = 1 to $vsego
                $enable = IniRead("conf.ini", "shag"&string($i), "enable", "0")
                ;переменные
                
        If $enable = 1 Then
            IniWrite("log.ini", "log", "shag"&string($i), " ВКЛЮЧЕН!")
            ;операторы 
			
        Else 
            IniWrite("log.ini", "log", "shag"&string($i), " ОТКЛЮЧЕН!")
        EndIf
    Next
MsgBox(0, "FFP", "Работа сделана!")
 
Автор
M

Math

Новичок
Сообщения
85
Репутация
1
Сейчас проверил, так действительно работает.
Там внутри есть ещё вложенный цикл, значит причина там.


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

Нашёл. В основном и во вложенном цикле начальный шаг я обозначил одной и той же переменной $i.
Спасибо всем, кто хотел помочь.
 
Верх