2010-10-29 58 views
1

全部,AutoIT:缺少Wend for

以下是我在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) 

和SET錯誤:

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 

我不能夠了解這裏的問題,因爲我有一個蜿蜒而ENDIF每一個while循環和If條件。我在這裏錯過了什麼嗎?

回答

2

由於您在then之後有命令ExitLoop,所以不需要EndIf

(在這一行:If @error = -1 Then ExitLoop

你既可以:

  1. 取出EndIf

    While 1 
        $currentLine = FileReadLine($fileHandle) 
        If @error = -1 Then ExitLoop 
        $days = StringSplit($currentLine, ",") 
        FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) 
    Wend 
    
  2. 移動ExitLoop到下一行。 (不使一大堆的道理,但該腳本將繼續運行。)

    While 1 
        $currentLine = FileReadLine($fileHandle) 
        If @error = -1 Then 
        ExitLoop 
        $days = StringSplit($currentLine, ",") 
        FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) 
        EndIf 
    Wend 
    

我將與1號去。

+0

如果您要使用選項2,則必須將EndIf移至ExitLoop後面的行。否則,ExitLoop之後的代碼將永遠不會運行。 – JohnForDummies 2010-11-02 12:19:30

+1

@JohnForDummies:你說得對。這就是爲什麼我說這沒有什麼意義。無論如何,如果FileReadLine失敗,您將不想執行該代碼。 – 2010-11-02 21:02:39

1

問題是,在WendIf已關閉之前,您有Endif,因爲您在此處有ExitLoop

因此,要麼刪除Endif或將ExitLoop放在別的地方。