v1
max-lange.comSeitenstatistik
Home Profile mIRC Scripting My PC Miscellaneous Contact


mIRC Tutorial
Fehler und wie man sie findet bzw. Hilfe bekommt
Das Script welches man geschrieben hat geht nicht - diese Situation sollte jeder kennen jedoch wissen viele nicht wie sie damit umgehen müssen.
Dafür gibt es ganz logische Vorgehensweisen, zum einen sollte man immer zuerst feststellen ob eine Fehlermeldung erscheint. Wenn dem so ist sollte man diese genau durchlesen und gegebenfalls den Befehl nochmal in der Help Datei nachlesen. Solch eine Fehlermeldung hat immer ein Vorteil, meist kann man das Problem ohne fremde Hilfe lösen - man muss nur eins tun: nachdenken! Genau aus diesem Grunde werde ich nicht weiter drauf eingehen.
Schwieriger gestaltet sich die Sache wenn kein Fehler kommt, in diesem Falle muss man aber auch nachdenken. Als erstes wird überprüft inwiefern es nicht geht, also wird ein Teil ausgeführt aber dann plötzlich nichtsmehr? Oder reagiert das Script garnicht?

Die Fehlersuche
Die einfachste Methode Fehler zu finden ist es wenn man diverse /echo Befehle in das Script einbaut und so überprüft ob bestimmte If-Abfragen und /while Schleifen ausgeführt werden und/oder Variablen und Identifiers korrekte Werte bzw. Rückgaben besitzen. Mit dieser Vorgehensweise kann man genaustens nachvollziehen was geschieht und kann an der Stelle wo plötzlich nichtsmehr geschieht bzw. ein Echo fehlt nachsehen und überprüfen ob eine If Bedingung evt. nicht zutrifft.

Die häufigsten Fehler
Hier eine kleine Auflistung der beliebtesten Fehler:
If-then-else
Man könnte meinen viel kann man hier nicht falsch machen - Irrtum: der Grossteil ist nicht in der Lage eine If-Abfrage korrekt zu schreiben. Nun ein paar Beispiele:

if (bedingung) { befehl | befehl2 }
if (bedingung) { befehl } | else { befehl2 }
if (bedingung) { befehl } | elseif (bedingung2) { befehl2 }
if ((bedingung) && (bedingung2)) { befehl | befehl2 }

Insbesonders auf die Klammerverteilung sollte hier acht gegeben werden, eine auf - eine zu. Nicht mehr und nicht weniger. Auch die Leerzeichen sind hier absichtlich so gesetzt. Die sind nicht zum Spass da also verwendet sie auch bitte so.

Befehle korrekt trennen
Wenn man mehrere Befehle in einer Zeile stehen hat muss man diese trennen dazu haben wir das | Zeichen. Dieses setzt man zwischen die beiden Befehle und lässt auf beiden Seiten ein Leerzeichen:

befehl1 | befehl2

Events und wie man sie richtig schreibt
Hier reicht ein Blick in die Help Datei wenn man sich nicht sicher ist und die Sache ist gegessen. Trotzdem stehen täglich Leute vor diesem Problem. Um es kurz zu sagen: Nur weil es

on *:TEXT:matchtext:#: { befehl }

heisst bedeutet dies nicht das man beim on Nick Event einen Channel angeben muss. Man ändert seinen Nick nämlich auf dem Server und nicht in einem bestimmten Channel, somit:

on *:NICK: { befehl }

Auch hier möchte ich gerne anmerken das die Leerzeichen benötigt werden. Einfach weglassen ist nicht drin.

Identifiers
Identifiers sind zum Grossteil nicht dauerhaft gesetzt, warum auch? $nick zB würde in einem Alias keinen Sinn ergeben. Also bedenkt dies, ihr könnt sie zwar in entsprechenden Events nutzen aber auch nur in diesen wo sie zur Verwendung kommen. Auch hier dient das on Nick Event als gutes Beispiel, ihr ändert euren Nick wie gesagt auf dem Server nicht im Channel somit könnt ihr $chan hier nicht nutzen es ist leer (= $null). Also überprüft immer ob eure Identifiers überhaupt im Zusammenhang mit eurem Event stehen bzw. auch in Aliasen gesetzt sind wenn ihr diese verwendet.
Genauso schlau wie vorher ?
Das alles hat euch nicht geholfen, ihr konntet euren Fehler trotzdem nicht selber ausfindig machen und meint auf fremde Hilfe angewiesen zu sein? Diese könnt ihr zB in #cyberscripters im QuakeNet bekommen, doch bedenkt ein paar Dinge:

- Stellt eure Frage gezielt und direkt. Sätze wie "Brauche Hilfe" und "Das geht nicht" sind absolut daneben.

- Sicherlich kann es immer gut sein demjenigen der euch helfen soll ein Stück Code zu geben um das Problem besser verständlich zu machen. Aber dann bitte nicht 200 Zeilen sondern wirklich nur den Teil der von Bedeutung ist und in welchen ihr vorher mit der oben genannten Methode den Ursprung eures Problems festgestellt habt.

- Aufdringliches Verhalten ist unangebracht. Unterlasst Dinge wie bold schreiben (das gilt für sämtliche Control Codes) und ungefragte Querys. Auch sollte es meist reichen die Frage einmal zu stellen - bitte wiederholt euch nicht ständig. Meist hat es ein Grund warum euch niemand antwortet, denkt drüber nach evt. habt ihr irgendeinen dieser Punkten nicht beachtet.

- Bedenkt auch das euch niemand gerne hilft wenn ihr ihn blöd anmacht, würdet ihr auch nicht wollen.


Stand: 2003-04-26



^--- up