Kompilierungsfehler
Kompilierungsfehler sind Fehler, die beim Speichern einer Map auftreten. Sie bedeuten, dass der Welt-Editor Probleme mit dem JASS-Script hat, da es so nicht funktioniert. Da jeder Auslöser in Wirklichkeit ein Jass-Script ist, können diese Fehler theoretisch jederzeit auftreten. Dass dies tatsächlich in GUI-Triggern vorkommt ist praktisch ausgeschlossen, da der Editor die nötigen Konvertierungen von GUI zu JASS automatisch ausführt. Häufig weiß der Editor aber selbst nicht was nun eigentlich der Fehler ist und gibt deshalb etwas naheliegendes aus. Deshalb sind nicht alle Fehlermeldungen eindeutig einem Fehler zuzuordnen.
Interpretation von Fehlern
Die Interpretation von den gemeldeten Kompilierungsfehlern ist meist recht schwierig, da das Programm, was die Fehler erkennt, nicht sehr gut ist. Meistens werden Fehler in der falschen Zeile gemeldet, und die Fehler selbst sind irreführend.
Finden der Zeile
Die Zeile, die den Fehler verursacht ist nicht immer die Zeile, in der dem Kompilierer der Fehler auch auffällt. Eine fehlende schließende Klammer am Ende einer Zeile fällt beispielsweise erst in der Zeile danach auf, da der Kompilierer erst da sicher sein kann, dass die Klammer wirklich nicht mehr kommt. Fehler werden sehr häufig zu spät gemeldet, aber nie zu früh! Die Zahl der Zeilen, um die sich ein Fehler verspätet, variiert.
Art des Fehlers bestimmen
Die Fehler werden manchmal falsch erkannt. Der Kompilierer kann schlieslich nicht wissen, was mit einer Zeile gemeint war, die er nicht versteht. Deshalb sollte man Fantasie bei der Interpretation von Fehlermeldungen haben.
Folgefehler
Wenn einmal ein Fehler aufgetreten ist, kann der Sinn des gesammten Codes, der darauf folgt verloren gehen. Deshalb wird der Benutzer manchmal mit Fehlern überflutet, obwohl nur ein einziges Wort falsch geschrieben ist. Deshalb sollte man immer nur den ersten Fehler, der auftritt beachten.
Arten von Fehlern und häufige Ursachen
Alle Fehlermeldungen des standardmäßig im Editor aktiven Syntax-Checkers in alphabetischer Reihenfolge:
"(' erwartet"
- bei einem Parameter vom Typ [code] wurde vergessen dem Funktionsnamen das Wort "function" vorranzustellen.
"Ausdruck erwartet"
- Ein Operator ("==", "+", "/" etc.) wurde falsch geschrieben oder vergessen.
- Ein Klammerfehler
"Array-Index erwartet"
- Die eckigen Klammern ("[]") wurden bei einer Variable vergessen, die ein Array ist.
"call' erwartet"
- "call" vor dem Aufruf einer Funktion wurde vergessen.
"Code-Anweisung erwartet"
- Ein einleitendes Schlüsselwort (z.B. call, set, local) wurde falsch geschrieben.
"endif' erwartet"
- Häufig ein Folgefehler des Kompilierers.
"Es wurde versucht"
- Es wurden die eckigen Klammern ("[]") auf eine Variable angewendet, die kein Array ist.
"Funktionsname erwartet"
- Der Name einer Funktion wurde falsch geschrieben.
- Eine Funktion existiert nicht.
- Eine Funktion existiert zwar, aber von dem Ort aus, von dem aus auf sie zugegriffen wird, kann nicht auf sie zugegriffen werden (z.B. eine Funktion, die im Kartenskript weiter unten steht).
"Reservierter Typ oder Handle-Typ erwartet"
- Ein Variablentyp wurde falsch geschrieben.
- Ein Variablentyp existiert nicht.
"then' erwartet"
- Das then am Anfang einer If-Anweisung wurde vergessen
"Ungültige Argumentenzahl"
- Funktion mit zu vielen oder zu wenigen Parametern aufgerufen.
- Manchmal auch als Folge von Klammerfehlern.
"Ungültiger Typ für angegebenen Operator"
- Vergessenes "return" am Ende einer Funktion. Vorsichtshalber sollte am Ende jeder Funktion ein "return" stehen, auch wenn dieser Punkt möglicherweise nie erreicht wird.
"Variablenname erwartet"
- Der Name einer Variable wurde falsch geschrieben.
- Eine Variable existiert nicht.
- Eine Variable existiert zwar, aber von dem Ort aus, von dem aus auf sie zugegriffen wird, kann nicht auf sie zugegriffen werden (z.B. eine lokale Variable aus einer anderen Funktion).
"Zeilenende erwartet"
- Häufig ein Folgefehler des Kompilierers.
Kompilierungsfehler durch importierte Dateien
Manchmal treten Kompilierungsfehler auch beim Import größerer Dateien und/oder besonders von MP3s auf. Sie lassen sich aber relativ einfach wie folgt umgehen:
- Man importiert die Sounds
- Man versucht abzuspeichern (dann erscheint die Fehlermeldung)
- Man ignoriert die Fehlermeldung, denn die Map wird trotzdem gespeichert, ist aber nicht mehr spielbar.
- Man schließt den Welt Editor
- Man öffnet den Welt Editor wieder und lädt seine Map
- Man speichert seine Map und... es geht
Es empfiehlt sich aber, nach dem importieren der Sounds wirklich SOFORT zu Schritt 2 und dann 3 und 4 überzugehen, da sonst andere importierte Dateien oder Auslöser beschädigt werden könnten.
Kompilierungsfehler in GUI-Triggern
In einem reinen GUI-Trigger ohne Custom Script, kann in der Regel kein Kompilierungsfehler auftreten, da das GUI ja gerade die Funktion erfüllt, eine einfachere Oberfläche für Jass-Code zu bieten, wobei nur logische Fehler möglich sind. Solche Fehlermeldungen weisen auf einen Fehler im World Editor selbst hin. Es gibt dokumentierte Fälle, in denen plötzlich eine vorher funktionierende Map, sich plötzlich nicht mehr speichern lässt, da Kompilierungsfehler auftreten, und zwar in Triggern, die völlig ohne Hilfe von Jass erstellt wurden. Solche Fälle lassen sich in der Regel durch Neuinstallation von Warcraft III beheben.
Alternative Syntaxchecker
Ein alternativer Syntaxchecker ist das Programm PJASS. Dieses lässt sich unter anderem mit Grimoire oder dem World Editor Helper in den Editor einbinden. Die Fehlermeldungen sind dann um einiges korrekter, und genauer. Zum Beispiel wird nichtmehr nur gesagt, dass ein Bezeichner nicht erkannt wurde, sondern auch, wie der heißt. Ausserdem werden dadurch die Abstürze, die der Syntaxchecker vom Editor manchmal hervorruft, vermieden.

USA
Argentina
Thyke.