IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Fehler bei moveto() in daemon()
AntwortenNeues ThemaNeue Umfrage

Fehler bei moveto() in daemon()

Geschrieben um 20:08 am 06.01.2012 | Zitat | Editieren | Löschen
Dienes
Mitglied
Baby Gumby
Beiträge: 9

Bin eben auf ein seltsames Verhalten der daemon()-Methode gestoßen und habe es mal auf das Wichtigste reduziert.

Gegeben sei folgender Code:



    setShort("+Raum A");

}

class RaumB: stdroom {

    setShort("+Raum B");

}

class Etwas: stditem {

    setShort("Etwas");

   

    moveto(RaumA);

   

    void onAction(int action) {

        return super.onAction(action);

    }

   

    void daemon() {

        moveto(RaumB);

    }

}

void main() {

    Etwas.startDaemon();

    write(Etwas.room().getShort(C_NOM, 0));

}```

Führt man es so aus, bekommt man die Fehlermeldung:

```test.floyd(28:9)moveto() muss ein Objekt übergeben werden```

Wirft man die onAction()-Methode aus der Klasse raus, kommt zwar kein Fehler, die Ausgabe ist aber "Raum A", das Objekt wird also nicht in den anderen Raum befördert.

Was läuft hier schief? Wie kann ich ein Objekt in seinem Daemon von Raum zu Raum bewegen?

Danke schonmal!
Geschrieben um 18:39 am 07.01.2012 | Zitat | Editieren | Löschen
Lukas
Mitglied
Bachelor Gumby
Beiträge: 42

In der Doku wird, wenn ich mich richtig erinnere, doch genau so ein Demon beschrieben. Hast du schon gecheckt, ob du gleich vorgehst?

Geschrieben um 18:56 am 07.01.2012 | Zitat | Editieren | Löschen
Dienes
Mitglied
Baby Gumby
Beiträge: 9

Ja, habe es damit abgeglichen und kann keinen Unterschied feststellen. Aber testen kann ich das Beispiel aus der Doku auch nicht, da hier der Interpreter ebenfalls etwas zu meckern hat:

expecting: string, complexstring, number

in der Zeile:

object pfad[3] = (raumA, raumB, raumC);

Er kann also das Array nicht anlegen, obwohl auch hier alle Klassen vorher bekannt sind... mh.

Geschrieben um 00:20 am 08.01.2012 | Zitat | Editieren | Löschen
rairon
Mitglied
Baby Gumby
Beiträge: 6

Danke für den Hinweis für den Fehler, in dem RaumB nicht richtig erkannt wird.

Grund dafür ist eine Typabgleich mit object, intern ist aber an dieser Stelle ein late binding für die Variable vorhanden, so dass der Typ noch nicht bekannt ist.

Ist gefixt und im Repository und wird von Oliver mit der nächsten Release verfügbar gemacht.

Die zweite Geschichte mit dem Array habe ich noch nicht getestet, ist vermutlich aber der selbe Hintergrund.

Geschrieben um 17:16 am 08.01.2012 | Zitat | Editieren | Löschen
Dienes
Mitglied
Baby Gumby
Beiträge: 9

Freut mich, helfen zu können und danke für die schnelle Bearbeitung der genannten Probleme :)

Auch wenn die Syntax hier und da ein paar kleine Macken hat, die man sich noch wegwünschen würde, ist Floyd speziell für Autoren mit Java/C-Hintergrund wohl das beste System, das mir bisher untergekommen ist. Großes Lob! :)

Geschrieben um 20:55 am 18.01.2012 | Zitat | Editieren | Löschen
Dienes
Mitglied
Baby Gumby
Beiträge: 9

Gibt es denn Pläne, wann das nächste Release erscheinen wird?

Diese Sache hier und das vergessene (!) Feature in setTime() sind meiner Meinung nach schon gravierende Bugs, für die man sich als Autor Hotfixes wünschen würde.

Geschrieben um 02:27 am 19.01.2012 | Zitat | Editieren | Löschen
Oliver Berse
Mitglied
Bachelor Gumby
Beiträge: 47

Dienes:

Gibt es denn Pläne, wann das nächste Release erscheinen wird?

Diese Sache hier und das vergessene (!) Feature in setTime() sind meiner Meinung nach schon gravierende Bugs, für die man sich als Autor Hotfixes wünschen würde.

Eine neue Version 3.2 mit Fixes und Detailverbesserungen folgt am Wochenende, bitte noch etwas Geduld.

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz