AutoIt: отсутствует WEND WEST
-
27-09-2019 - |
Вопрос
Все,
Ниже приведен код, который я написал в AutoIt.
$fileToWrite = FileOpen("C:\output.txt", 1)
If FileExists("C:\test.csv") Then
$fileHandle= FileOpen("test.csv", 0)
If ($fileHandle = -1) Then
MsgBox (0, "Error", "Error occured while reading the file")
Exit
Else
While 1
$currentLine = FileReadLine($fileHandle)
If @error = -1 Then ExitLoop
$days = StringSplit($currentLine, ",")
FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF)
EndIf
Wend
EndIf
Else
MsgBox (0, "Error", "Input file does not exist")
EndIf
FileClose($fileToWrite)
FileClose($fileHandle)
И набор ошибок:
C:\ReadCSV.au3(14,4) : ERROR: missing Wend.
EndIf
^
C:\ReadCSV.au3(9,3) : REF: missing Wend.
While
^
C:\ReadCSV.au3(15,3) : ERROR: missing EndIf.
Wend
^
C:\ReadCSV.au3(3,34) : REF: missing EndIf.
If FileExists("C:\test.csv") Then
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\ReadCSV.au3(15,3) : ERROR: syntax error
Wend
^
C:\ReadCSV.au3 - 3 error(s), 0 warning(s)
>Exit code: 0 Time: 3.601
Я не могу понять проблему здесь, так как у меня есть WEND, и Endif для каждого пока цикла и состояние, если Я что-то упускаю здесь?
Решение
Так как у вас есть команда ExitLoop
после then
, нет необходимости в EndIf
.
(В этой строке: If @error = -1 Then ExitLoop
)
Вы можете либо:
Удалить
EndIf
While 1 $currentLine = FileReadLine($fileHandle) If @error = -1 Then ExitLoop $days = StringSplit($currentLine, ",") FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) Wend
Двигаться.
ExitLoop
на следующую строку. (Который не имеет большого смысла, но скрипт все еще будет запущен.)While 1 $currentLine = FileReadLine($fileHandle) If @error = -1 Then ExitLoop $days = StringSplit($currentLine, ",") FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) EndIf Wend
Я бы пошел с # 1.
Другие советы
Проблема в том, что у вас есть Endif
перед Wend
и то If
уже закрыт, потому что у вас есть ExitLoop
там.
Так что либо удалите Endif
или положить ExitLoop
где-нибудь еще.
Не связан с StackOverflow