AutoIT: Fehlende Wend für While
-
27-09-2019 - |
Frage
Alle,
Unten ist der Code, dass ich in AutoIT geschrieben haben.
$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)
Und die Menge des Fehlers:
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
Ich bin das Problem nicht in der Lage, hier zu verstehen, da ich habe eine Wend und EndIf für jeden While-Schleife und eine Ist die Bedingung. Bin ich etwas fehlt hier?
Lösung
Da Sie den Befehl ExitLoop
nach dem then
haben, gibt es keine Notwendigkeit für die EndIf
.
(In dieser Zeile: If @error = -1 Then ExitLoop
)
Sie können entweder:
-
Die
EndIf
While 1 $currentLine = FileReadLine($fileHandle) If @error = -1 Then ExitLoop $days = StringSplit($currentLine, ",") FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) Wend
-
Bewegen Sie den
ExitLoop
in der nächsten Zeile. (Was nicht eine ganze Menge Sinn machen, aber das Skript noch ausgeführt werden.)While 1 $currentLine = FileReadLine($fileHandle) If @error = -1 Then ExitLoop $days = StringSplit($currentLine, ",") FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) EndIf Wend
Ich würde mit # 1.
Andere Tipps
Das Problem ist, dass Sie eine Endif
vor dem Wend
haben und die If
ist bereits geschlossen, weil Sie ExitLoop
da drüben haben.
die Endif
Also entweder entfernen oder die ExitLoop
setzen woanders.