Fehler

DestinyScript verfügt über eine Fehlerbehandlung, die eine große Anzahl verschiedener Probleme, die im verfassten Code auftreten können, genau beschreiben kann.

0: Es ist ein unbekannter Fehler aufgetreten

Existiert nur zur Sicherheit, sollte jedoch eigentlich nie auftreten. Falls dieser Fehler angezeigt wird, kann es sein, dass Destiny.dll einem Programmierfehler unterliegt oder der Speicher defekt ist.

1: Es ist ein Syntaxfehler aufgetreten

Ein häufig bei Tippfehlern auftretender Fehler, meist wenn ein Zeichen mitten im Code falsch ist und dies beim Schreiben nicht aufgefallen ist (z.B.: v[1) = 7;).

2: Es wurde an einer Stelle, wo ein Wert erwartet wurde, keiner angegeben

Der Code-Interpreter erhält keinen Wert an einer Stelle, wo jedoch einer stehen müsste. Beispiele hierfür wären leere Klammern (v[1] = 3 + ();), Fehlende Parameter mit korrekt gesetztem Komma (v[1] = Logic.And3(true, true, );) und Aufrufe, die in der Hilfe ohne "OUTPUT"-Block stehen, also mangels Ausgabewert nicht für Operationen verwendet werden können (v[1] = Keyboard.SetKeyState(VK_LEFT, KEYEVENTF_KEYUP);).

3: Es wurde ein unbekannter Bezeichner angegeben

Im zu interpretierenden Code steht der Name eines Objektes, einer Konstante, Methode oder Eigenschaft, der nicht definiert ist. Meist liegt entweder ein Irrtum oder ein schwer zu erkennender Tippfehler vor.

4: Es ist ein Konvertierungsfehler aufgetreten

Deutet auf einen Programmierfehler in einer Datenkonvertierungspassage von Destiny.dll oder defekten Speicher hin, üblicherweise befindet sich kein oder zumindest nicht dieser Fehler im zu interpretierenden Code.

5: Es wurde versucht einen Nur-Lese-Wert zu beschreiben

Viele Werte, auf die DestinyScript Zugriff gewährt, sind lediglich lesbar, können jedoch nicht geändert werden. Wird ein schreibgeschützter Speicherbereich zum Beschreiben adressiert, tritt dieser Fehler auf.

6: Die Grenzen eines Arrays wurden überschritten

Deutet auf einen ungültigen Wert innerhalb von eckigen Klammern hin (z.B.: v[1] = Picture[-1].Red;).

7: Der Wert ist außerhalb des zulässigen Wertebereichs für eine Konvertierung

Passiert, wenn ein Wert zu einem anderen Datentyp gewandelt werden soll, jedoch zu groß für den Zieltyp ist.

8: Es ist ein Speicherfehler aufgetreten

Der zur Verfügung stehende RAM ist zu klein, um die angeforderte Menge an Daten bereitzustellen. Besonders beim Anlegen von Strings, die die häufigste Fehlerquelle hierfür sind, sollte immer genau darauf geachtet werden, ihre Größe nicht explodieren zu lassen. Andere mögliche Quellen sind vor allem "ReAlloc()"-Methoden. Je nach Betriebssystem-Version kann dieser Fehler irrtümlich anstelle von #24 auftreten.

9: Es wurde ein ungültiger Wert zugewiesen oder als Parameter verwendet

Ähnelt häufig dem Arraygrenzen-Fehler, jedoch ist der Verwendungszweck des falsch angegebenen Wertes anderer Natur. Für viele Parameter von Methoden-Aufrufen gibt es vorgeschriebene Wertebereiche.

10: Es wurde eine binäre Operation mit Gleitkommawert durchgeführt

Tritt auf, wenn binäre Operatoren zusammen mit Kommazahlen verwendet werden, was jedoch nicht zulässig ist, da nicht davon ausgegangen wird, dass lediglich der Vorkommateil des Operanden gemeint ist (z.B.: v[1] = 1.5 & 1;). Sollte dem doch so sein, ist eine explizite Dword-Konvertierung notwendig (siehe Objekt "Convert").

11: Es wurde eine arithmetische/binäre Operation mit einem Switch durchgeführt

Tritt auf, wenn ein Boolescher Wert (TRUE oder FALSE) mit einem grundmathematischen Operator oder einer binären Verknüpfung verbunden wird (z.B.: s[1] = true + false;).

12: Es wurde eine mathematische Operation mit einem String durchgeführt

Ein String wurde mit einem grundmathematischen oder binären Operator verbunden. Dies ist abgesehen von "+" zwischen zwei Strings (auch wenn ".." empfohlen wird) nicht möglich (z.B. a[1] = "3" * 5;). Sollte der String nur aus einer textgewordenen Zahl bestehen, muss er vorher explizit konvertiert werden (siehe Objekt "Convert").

13: Es ist ein Gleitkommafehler aufgetreten

Steht stellvertretend für diverse, schwer auseinanderzuhaltende Fehler beim Rechnen mit Kommazahlen. Häufig handelt es sich um einen Datenfehler mit einer ungültigen Zahl, um ein undefiniertes Rechenergebnis oder eine komplexe (anstelle einer reellen) Zahl, mit der DestinyScript nicht umgehen kann (z.B.: f[1] = Math.Power(-2, 2.5);).

14: Es wurde eine zu lange Dezimalzahl angegeben

Der Kommazahlenwert sprengt, führende Nullen und jene nach der letzten definierten Kommastelle nicht mitgezählt, den technisch möglichen Bereich von 13 Ziffern (z.B.: f[1] = 1234567890.0987654321;).

15: Es wurde eine Division durch Null durchgeführt

Das Ergebnis einer Division durch Null ist in der Mathematik nicht definiert, daher muss eine derartige Berechnung abgelehnt werden (z.B.: v[1] = 5 / 0;), zudem ist DestinyScript nicht in der Lage, die häufig vertretene Theorie eines (+/-)Unendlich (auch vertreten in der Norm "IEEE 754") als Ergebnis sinnvoll zu verarbeiten. Sollten Werte dynamisch angegeben sein, muss die Berechnung im Falle eines 0-Divisors manuell umgangen werden.

16: Es wurde ein ungültiges Stringformat angegeben

Ein String soll in eine Zahl gewandelt werden, was jedoch aufgrund des Inhalts, der sich nicht nur auf eine Zahl beschränkt, nicht möglich ist (z.B.: v[1] = "Zahl: 12345";).

17: Es wurde eine ungültige Textposition angegeben

Es wird im Code auf eine Position in einem String verwiesen, die außerhalb des Inhalts liegt.

18: Es wurde auf ein nicht-initialisiertes AuroraSheet zugegriffen

Das Nutzen von AuroraSheet-Eigenschaften setzt häufig voraus, dass im referenzierten Objekt zuvor auch eine Grafik im Speicher generiert oder aus einer Datei geladen wurde.

19: Es wurde auf einen Pixel außerhalb des Bildbereichs zugegriffen

Im Code wird beim Auslesen oder Verändern von Pixeln durch Positions- oder Größenangaben auf eine Stelle verwiesen, die sich außerhalb der Bildabmessungen befindet.

20: Es wurde eine überlappende Kopieroperation mit dem selben Quell- und Zielbild durchgeführt

Beim Kopieren von Bildinhalten, bei der Quelle und Ziel identisch sind, muss darauf geachtet werden, dass sich die dafür genutzten Bereiche nicht überschneiden.

21: Es wurde versucht auf einen ungültigen Paletteneintrag zuzugreifen

AuroraSheet-Paletten umfassen technisch begingt immer 256 Farben, jegliche Referenzen auf Werte außerhalb eines Bereiches von 0 bis 255 sind ungültig.

22: Die Initialisierung des Socket-Systems ist fehlgeschlagen

Das System, zu dem eine Verbindung aufgebaut werden soll, weist entweder keine kompatible Winsock-Version (DestinyScript nutzt Winsock 2.2) oder notwendige Hardware auf.

23: Es ist kein freies Socket vorhanden

Tritt auf, wenn die Konstante NEXT_FREE_SOCKET von Server.Accept() verwendet wird und kein Client-Socket mehr frei ist. Zunächst einen freien Socket durch Client.NextFree() zu ermitteln kann hier helfen.

24: Es konnte kein neues Socket erstellt werden

Windows akzeptiert, wenn dieser Fehler passiert, keine weiteren aktiven Sockets oder ein anderer aktiver Prozess blockiert deren Erstellung. Je nach Betriebssystem-Version kann es auch passieren, dass stattdessen Fehler #8 oder #27 auftritt.

25: Es wurde eine Operation durchgeführt, die ein geschlossenes Socket erfordert

Das Socket ist bereits mit einem Ziel verbunden, die gewollte Aktion ist jedoch nur mit einem geschlossenen möglich.

26: Es wurde eine Operation durchgeführt, die ein geöffnetes Socket erfordert

Das Socket befindet sich im geschlossenen Zustand, die gewollte Aktion ist jedoch nur mit einem geöffneten möglich.

27: Es konnte keine Verbindung mit dem Socket hergestellt werden

Passiert bei einem Fehlschlag von Client[].Connect(), wenn die angegebene Adresse nicht gefunden wurde. Falls SOCKETFLAG_NOTBLOCKING verwendet wurde und zum Zeitpunkt, zu dem der Versuch gestartet ist, noch nicht klar war, dass die Verbindung nicht glücken wird, wird trotz Fehlschlag kein Fehler ausgegeben.

28: Es wurde eine ungültige Operation für den Sockettyp durchgeführt

...

29: Es ist ein Socketfehler aufgetreten

...

30: Es ist Datenmüll bei einem Socket angekommen (Out-of-Band)

...

31: Ein angegebener String ist zu lang um ihn über ein Destiny-Socket zu versenden

...

32: Es wurde eine Operation durchgeführt, die ein geschlossenes Dateihandle erfordert

...

33: Ein angegebener Pfad konnte nicht aufgelöst werden

...

34: Es wurde versucht auf eine Operation durchzuführen, für die keine Berechtigung vorhanden ist

...

35: Eine Datei konnte nicht geöffnet werden

...

36: Es wurde eine Operation durchgeführt, die ein geöffnetes Dateihandle erfordert

...

37: Es ist nicht möglich auf die Daten einer Datei zuzugreifen

...

38: Ein Ordner konnte nicht erstellt werden

...

39: Ein Ordner konnte nicht gelöscht werden

...

40: Eine Datei/ein Ordner konnte nicht umbenannt werden

...

41: Eine Datei konnte nicht kopiert werden

...

42: Eine Datei konnte nicht gelöscht werden

...

43: Die Attribute einer Datei/eines Ordners konnte nicht gelesen werden

...

44: Die Attribute einer Datei/eines Ordners konnten nicht geschrieben werden

...

45: Eine Ordnerdurchsuchung wurde bereits gestartet

...

46: Eine Ordnerdurchsuchung konnte nicht gestartet werden

...

47: Es wurde noch keine Ordnerdurchsuchung gestartet

...

48: Es wurde versucht eine geblockte Destiny-Funktion aufzurufen

...

49: Der Versuch eine Datei auszuführen ist fehlgeschlagen

...

50: Es wurden nicht genügend Parameter für die Durchführung eines Befehls angegeben

...

51: Es wurden zwei Werte verglichen, die nicht vergleichbar sind

...

52: Es wurde ein ungültiges Vor-/Nachzeichen angegeben

...

53: Es wurde ein Wert an einer Stelle geschrieben, wo dies nicht erlaubt ist

...

54: Die Angabe "EndIf" fehlt

...

55: Die Angabe "Loop" fehlt

...

56: Es wurde keine Bedingung angegeben

...

57: Die Angabe "Next" fehlt

...

58: Die Angabe "Case" fehlt

...

59: Die Angabe "EndSwitch" fehlt

...

60: Es wurde Break an einer Stelle durchgeführt, wo dies nicht erlaubt ist

...

61: Es wurde Continue an einer Stelle durchgeführt, wo dies nicht erlaubt ist

...

62: Es wurde ein ungültiges Handle verwendet

...

63: Es wird an einer Stelle ein Operator erwartet, jedoch keiner angegeben

...

64: Der Zugriff auf einen Speicherslot ist nicht möglich

...

65: Es ist eine Exception aufgetreten

...

66: Es wurde ein ungültiges Schleifenoperator-Level angegeben

...

67: Es wurde ein Continue durchgeführt, das nicht auf eine Schleife verweist

...