|
Titel: BUG: WHEREIS STARTER Beitrag von: Chazar am 15.03.2008, 20:27:36 1) Wenn der Starter schon ausgeloggt ist, erhalte ich auf die Anweisung WHEREIS STARTER sofort den Fehler java.lang.NullPointerException. Ist das nicht ein wenig übertrieben? Sollte die Variable ROOM in diesem Fall nicht einfach nicht existieren oder leer sein? Natürlich kann man den Namen des Starters in einer Variablen speichern und mit GETINFO überprüfen, aber ich brauche die Raumnummer ohnehin.
(EDIT/UPDATE: Fehler wurde behoben, siehe Thread (http://www.brettspielwelt.de/Forum/index.php/topic,114008.msg925363.html#msg925363) 2) Auch habe ich Probleme mit EXISTS: Mit einem ausgedachten Variablennamen xyz gilt in Versuchen immer immer ( EXISTS xyz ) == ( NOT ( ISEMPTY [xyz] ) ). Also habe ich fast überall NOT ISEMPTY durch EXISTS ersetzt und bekam prompt Probleme: Bei Variablen wie SUBST1 oder PARAM stimmt die Gleichung nicht! Diese können leer sein und trotzdem existieren, wieso? Oder habe ich es hier einfach nur mit Listen zu tun, die lediglich die leere Liste enthalten? Muss ich diese von Info-Befehlen gesetzen Variablen immer mit ISEMPTY untersuchen? Titel: Re: BUG: WHEREIS STARTER Beitrag von: SLC am 16.03.2008, 01:45:35 NOT EXISTS var -> die Variable gibt es nicht (oder wurde mit UNSET vernichtet)
ISEMPTY [var] -> die Variable enthält einen Leerstring (leere Liste) Das ist schon 2 paar Schuhe, auch wenn im 2. Fall sogar eine nicht vorhanden Variable erlaubt ist (und zu "" wird), wodurch es eigentlich nur den beschriebenen Unterschied gibt: Ist var mit dem Wert "" belegt, dann ist NOT EXISTS var zwar FALSE, aber ISEMPTY [var] ist TRUE... ;D Man achte übrigens drauf, was passiert, wenn man eine LOCAL-Variable gleichen Namens mit UNSET bearbeitet! ;D Grüße, SLC Titel: Re: BUG: WHEREIS STARTER Beitrag von: Chazar am 16.03.2008, 13:55:15 Das Problem ist aber, das
Code: LOCAL x gilt! Es gibt also einen Unterschied zwischen LOCAL x und LOCAL x = ""IF EXISTS x >> Nie, es sei denn es gibt ein globales x ELSE >> Immer. Welcher Code ist dann also besser: Code: LOCAL x oderIF ... EVAL x = ... ELSE EVAL x = ... Code: IF ... wenn x ohnehin nicht global existiert, also ein temporäres verdecken ausgeschlossen ist?EVAL x = ... ELSE EVAL x = ... UNSET x --- Abgesehen von diesen Feinheiten, was ist mit meiner ersten Frage im ersten Post in diesem Thread? Bug oder Feature? Titel: Re: BUG: WHEREIS STARTER Beitrag von: SLC am 16.03.2008, 15:17:52 Moin!
Das Problem ist aber, das Code: LOCAL x gilt! Es gibt also einen Unterschied zwischen LOCAL x und LOCAL x = ""IF EXISTS x >> Nie, es sei denn es gibt ein globales x ELSE >> Immer. Eigentlich andersrum. Nach "LOCAL x" sollte "EXISTS x" immer TRUE liefern. Falls nicht -> BUG! ;D Grüße, SLC Titel: Re: BUG: WHEREIS STARTER Beitrag von: Chazar am 16.03.2008, 16:49:31 Eigentlich andersrum. Nach "LOCAL x" sollte "EXISTS x" immer TRUE liefern. Falls nicht -> BUG! ;D Das ist ja mal eine klare, verlässliche Antwort! ;D Also ist es ein BUG: Code: -- EXISTS nixda: [=EXISTS nixda] Den Test hatte ich vor 2-3 Tagen durchgeführt, auf die Idee LOCAL = "" kam ich damals noch nicht.-- ISEMPTY nixda: [=ISEMPTY [nixda]] -- ISINTEGER nixda: [=ISINTEGER [nixda]] LOCAL nixda -- LOCAL nixda -- EXISTS nixda: [=EXISTS nixda] -- ISEMPTY nixda: [=ISEMPTY [nixda]] -- ISINTEGER nixda: [=ISINTEGER [nixda]] EVAL nixda = "123" -- EVAL nixda = "123" -- EXISTS nixda: [=EXISTS nixda] -- ISEMPTY nixda: [=ISEMPTY [nixda]] -- ISINTEGER nixda: [=ISINTEGER [nixda]] UNSET nixda -- UNSET nixda -- EXISTS nixda: [=EXISTS nixda] -- ISEMPTY nixda: [=ISEMPTY [nixda]] -- ISINTEGER nixda: [=ISINTEGER [nixda]] <OUTPUT> -- [Timaer] EXISTS nixda: FALSE -- [Timaer] ISEMPTY nixda: TRUE -- [Timaer] ISINTEGER nixda: FALSE -- [Timaer] LOCAL nixda -- [Timaer] EXISTS nixda: FALSE -- [Timaer] ISEMPTY nixda: TRUE -- [Timaer] ISINTEGER nixda: FALSE -- [Timaer] EVAL nixda = "123" -- [Timaer] EXISTS nixda: TRUE -- [Timaer] ISEMPTY nixda: FALSE -- [Timaer] ISINTEGER nixda: TRUE -- [Timaer] UNSET nixda -- [Timaer] EXISTS nixda: FALSE -- [Timaer] ISEMPTY nixda: TRUE -- [Timaer] ISINTEGER nixda: FALSE Gruß, Chazar, der immer noch auf eine Antwort zur wichtigeren Frage nach WHEREIS STARTER wartet. ;) |