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?

War es hilfreich?

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:

  1. Die EndIf

    While 1
        $currentLine = FileReadLine($fileHandle)
        If @error = -1 Then ExitLoop
        $days = StringSplit($currentLine, ",")
        FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF)
    Wend
    
  2. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top