2016-07-14 11 views
0

Ich habe, was wie eine einfache FOREACH Schleife in IDL (Version 8.2.2) scheint. Für das Leben von mir kann ich nicht sehen, warum ich einen Syntaxfehler bekomme. Ich versuchte, die FOREACH durch eine einfache FOR Schleife mit den gleichen Ergebnissen zu ersetzen.Syntaxfehler auf FOREACH ... ENDFOREACH Schleife

Das Entfernen der for-Schleife und das Ausführen der Anweisungen alleine funktioniert gut (hartes Codieren eines einzelnen Werts für file natürlich).

FOREACH file, filenames DO BEGIN 
    ; A number of 
    ; statements that execute 
    ; just fine 
ENDFOREACH 

Ergebnis:

ENDFOREACH 
^ 
% Syntax error. 

Dies alles in einem Skript ausgeführt wird, aufgerufen mit @myscript

Vielleicht ein noch einfacheres Beispiel direkt aus der Dokumentation helfen:

ich erstellt Skript test.pro, Kopieren/Einfügen aus der Dokumentation: http://www.harrisgeospatial.com/docs/BEGIN___END.html, der Inhalt von test.pro sind:

arr = [1, 3, 5, 7, 9] 
FOREACH element, arr DO BEGIN 
    PRINT, element 
ENDFOREACH 

Ergebnis:

IDL> @test 
     9 

ENDFOREACH 
^ 
% Syntax error. 
    At: /mydir/test.pro, Line 4 
IDL> 
+1

Nicht viel kann hier schiefgehen. Ist 'Dateiname' definiert und initialisiert? Ist eine einfache "foreach/for" mit vielleicht nur ganzen Zahlen arbeiten? – Ash

+0

Ich habe versucht, es durch ein einfaches 'for' /' endfor' zu ersetzen, das gleiche Problem. Ich habe dreifache Dateinamen überprüft und reproduziert sie mit einem einfacheren Beispiel, wie es jetzt veröffentlicht wurde. –

+1

Sind Sie sicher, dass Ihre Frage "idl" und nicht "idl-Programmiersprache" ist? – PetSerAl

Antwort

1

Batch-Dateien (so genannte über @myscript) nicht zusammengesetzte Anweisungen haben, das heißt mit BEGIN/END. Machen Sie es zu einer Prozedur/Funktion oder einem Hauptebenenprogramm.

+0

Ahhhhhh ::: ein klebriger Schlag auf die Stirn ist in der Ferne zu hören ::: Danke! –

+2

Oder, wenn Sie wirklich wollen, können Sie "&" verwenden, um es zu einer zusammengesetzten Aussage zu machen. Zum Beispiel: foreach Element, arr beginnen & blah blah & endforeach Sie können $ verwenden, um es über mehrere Zeilen zu teilen. –

Verwandte Themen