Schwerwiegender JMP16-FehlerDies ist keine Frage, sondern soll lediglich auf ein Problem aufmerksam machen, das mir kürzlich in meinen Skripten seit dem Wechsel zu JMP16 aufgefallen ist – nämlich, dass ich davon ausgehen würde Ist Namespace( ... ) würde keinen wahrheitsgetreuen Wert für einen gelöschten Namespace zurückgeben, tut dies aber in JMP16.2 (aber nicht in JMP14.3)
Aus diesem Grund stürzt das folgende Skript JMP16.2 ab:
ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
If( Is Namespace( ns:ns ),
ns:ns:__item__ = 4;
);
Ich musste meine Skripte entsprechend ändern, um das Problem zu umgehen:
ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
If( Is Namespace( ns:ns ) & !Is Missing( ns:ns << Get Name ),
ns:ns:__item__ = 4;
);
Automatisierung und SkripterstellungBetreff: Schwerwiegender JMP16-FehlerGibt es hier ein Update?
klingt nach einem Kandidaten dafür Winzige Fallen in Jmp und JSL ...
Betreff: Schwerwiegender JMP16-FehlerEigentlich ist mir gerade wieder eingefallen, warum – Namespace existiert untersucht den Wert der Variablen und sagt Ihnen, ob der Wert einen Namespace darstellen kann Ist Namespace sollte sagen, ob die Variable direkt ein Namespace oder eine Namespace-Referenz ist:
Aus diesem Grund schlägt dieser Code fehl:
ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Namespace Exists( ns name ),
Show( ns name:item )
);
Während dies nicht der Fall ist:
ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Is Namespace( ns name ),
Show( ns name:item )
);
Betreff: Schwerwiegender JMP16-FehlerHaha, ich habe deinen Beitrag nicht sehr aufmerksam gelesen!Sie haben Recht, dass dies zu funktionieren scheint, aber ich habe das vage Gefühl, dass ich diese Methode aus irgendeinem Grund in meinem Code nicht verwendet habe, obwohl ich mich momentan nicht daran erinnern kann, warum.
Betreff: Schwerwiegender JMP16-FehlerIch meinte Namespace Exists(), was sich von Is Namespace zu unterscheiden scheint (oder vielleicht übersehe ich hier etwas)
Names Default To Here(1);
Clear Log();
Delete Namespaces();
ns = New Namespace();
ns:ns = New Namespace();
Show(Namespace Exists(ns:ns), Is Namespace(ns:ns));
ns:ns << Delete Namespace();
Show(Namespace Exists(ns:ns), Is Namespace(ns:ns));
/*Namespace Exists(ns:ns) = 1;
Is Namespace(ns:ns) = 1;
Namespace Exists(ns:ns) = 0;
Is Namespace(ns:ns) = 1;*/
Betreff: Schwerwiegender JMP16-Fehler@jthi Dies gilt für einen bloßen Namespace, jedoch nicht, wenn ein bereichsbezogener Namespace angegeben wird, wie dies zeigt:
ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
Betreff: Schwerwiegender JMP16-FehlerVielen Dank für diese Information. Ein JMP-Entwickler hat die von Ihnen gefundenen Probleme untersucht und protokolliert, damit sie in einer zukünftigen Version behoben werden können!
Betreff: Schwerwiegender JMP16-FehlerVielen Dank, dass Sie das gefunden haben. Ich konnte dies reproduzieren und habe den Bericht zur Untersuchung an den JMP-Support gesendet.
Dan
JMP-Produktmanagement.
Betreff: Schwerwiegender JMP16-FehlerSchöner Fang! Ich hoffe, es ist nicht zu spät für die nächste 17-Beta.
Betreff: Schwerwiegender JMP16-FehlerNamespace Exists() scheint 0 für gelöschte Namespaces zurückzugeben.
Betreff: Schwerwiegender JMP16-FehlerJa, ich habe es heute auch gemeldet.Ich werde hier alle Aktualisierungen veröffentlichen – aber ich gehe davon aus, dass das Team sich des Problems wahrscheinlich bereits bewusst ist.
Betreff: Schwerwiegender JMP16-FehlerWurde dies den JMP-Supportmitarbeitern gemeldet?