Что нового

Неправильно выполняется цикл

Alkantel

Новичок
Сообщения
45
Репутация
1
Добрый вечер. Наваял тут скриптик, но цикл, а точнее одно условие неправильно работает.

Есть файл "FileName.ini" такого содержания:

Start
"C:\Program Files\Path\To\Programm1.exe"
"C:\Program Files\Path\To\Programm1.exe"
Exit

И такой скрипт:
Код:
$gNumLine = 1
$gOpenFile = FileOpen("FileName.ini", 0)
$gReadLine = FileReadLine($gOpenFile, $gNumLine)
$gExitString = StringCompare($gReadLine, "Exit", 1)

If $gExitString = -1 Or 1 Then
   Do
	  $gNumLine = $gNumLine +1
	  $lPathApp = FileReadLine($gOpenFile, $gNumLine)
	  $lExitString = StringCompare($lPathApp, "Exit", 1)
		 If $lExitString = -1 Or 1 Then
			;Run($lPathApp)
			MsgBox (64,"Application Path:", $lPathApp)
		 EndIf
	  Until $lExitString = 0
   EndIf


По идее в MsgBox не должна появляться строка "Exit", но она там есть. Вопрос: почему, что я делаю не так?

P.S. На работоспособность это не влияет, но хотелось бы докопаться до истины и улучшить свои знания по AutoIt.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Alkantel
Пока что не вник в чем суть скрипта, но замечена первая ошибка:
Код:
If $lExitString = -1 Or 1 Then

Это условие выполнится в любом случае, так как переменная $lExitString если будет равна "-1" то условие выполнится. Если же НЕ будет равно "-1", то оно все равно выполнится, потому что после этого условия идет ошибочное - "1", условие if проверит на подлинность числа "1" на "истину"(1 всегда истинна, следовательно вы не то сравниваете).
Скорее всего следует изменить условие на такое:
Код:
If $lExitString = -1 Or $lExitString=1 Then
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
Спасибо за оперативный ответ. все работает как надо :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
ИМХО, проще заменить на
Код:
If $lExitString Then
	;...
или на
Код:
If StringCompare($lPathApp, "Exit", 1) Then
	;...
 
Верх