2010-10-29 32 views
1

Tous,AutoIT: manquant Wend pour tandis que

Ci-dessous le code que j'ai écrit dans 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) 

Et l'ensemble de l'erreur:

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 

Je ne suis pas en mesure de comprendre la question ici puisque j'ai un Wend et EndIf pour chaque boucle While et une condition Si. Est-ce que j'ai râté quelque chose?

Répondre

2

Puisque vous avez la commande ExitLoop après la then, il n'y a pas besoin de EndIf.

(Dans cette ligne: If @error = -1 Then ExitLoop)

Vous pouvez soit:

  1. Retirez le EndIf

    While 1 
        $currentLine = FileReadLine($fileHandle) 
        If @error = -1 Then ExitLoop 
        $days = StringSplit($currentLine, ",") 
        FileWrite($fileToWrite,$days[2] & ", " & $days[9] & @CRLF) 
    Wend 
    
  2. Déplacer le ExitLoop à la ligne suivante. (Ce qui ne fait pas beaucoup de sens, mais le script continue à fonctionner.)

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

Je voudrais aller aveC# 1.

+0

Si vous deviez utiliser l'option 2, vous devriez déplacer l'EndIf à la ligne après ExitLoop. Sinon, le code après ExitLoop ne sera jamais exécuté. – JohnForDummies

+1

@JohnForDummies: Vous avez raison. C'est pourquoi j'ai dit que cela n'avait pas beaucoup de sens. De toute façon, vous ne voudriez pas exécuter ce code si FileReadLine échoue. –

1

Le problème est que vous avez un Endif avant le Wend et le If est déjà fermé parce que vous avez ExitLoop là-bas.

Donc soit supprimer le Endif ou mettre le ExitLoop ailleurs.