Bogue fatal de JMP16Ce n'est pas une question, il s'agit simplement de faire prendre conscience d'un problème que j'ai récemment remarqué dans mes scripts depuis mon passage à JMP16 - à savoir, je suppose que Est-ce que l'espace de noms( ... ) ne renverrait pas une valeur véridique pour un espace de noms supprimé, mais c'est le cas dans JMP16.2 (mais pas dans JMP14.3)
Pour cette raison, le script suivant fait planter JMP16.2 :
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;
);
J'ai dû modifier mes scripts pour obtenir l'équivalent de ceci pour contourner le problème :
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;
);
Automatisation et scriptsRe : Bug fatal JMP16une mise à jour ici ?
on dirait un candidat pour Petits pièges dans Jmp et JSL ...
Re : Bug fatal JMP16En fait, je viens de me rappeler pourquoi... L'espace de noms existe examinera la valeur de la variable et vous dira si la valeur peut représenter un espace de noms, alors que Est un espace de noms devrait indiquer si la variable est directement un espace de noms ou une référence d'espace de noms :
Pour cette raison, ce code échoue :
ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Namespace Exists( ns name ),
Show( ns name:item )
);
Alors que ce n'est pas le cas :
ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Is Namespace( ns name ),
Show( ns name:item )
);
Re : Bug fatal JMP16Haha, je n'ai pas lu très attentivement ton message !Vous avez raison, cela semble fonctionner, mais j'ai le vague sentiment que je n'ai pas utilisé cette méthode pour une raison quelconque dans mon code, même si je ne me souviens pas pourquoi pour le moment.
Re : Bug fatal JMP16Je voulais dire Namespace Exists() qui semble différer de Is Namespace (ou peut-être qu'il me manque quelque chose ici)
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;*/
Re : Bug fatal JMP16@jthi , c'est le cas pour un espace de noms nu, mais pas lorsque l'on donne un espace de noms étendu, comme ceci le montre :
ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
Re : Bug fatal JMP16Merci beaucoup pour cette information. Un développeur JMP a étudié et enregistré les problèmes que vous avez trouvés afin qu'ils puissent être corrigés dans une prochaine version !
Re : Bug fatal JMP16Merci d'avoir trouvé ça. J'ai pu reproduire cela et j'ai soumis le rapport au support JMP pour enquête.
Dan
Gestion des produits JMP.
Re : Bug fatal JMP16Belle prise! J'espère qu'il n'est pas trop tard pour la prochaine version bêta 17.
Re : Bug fatal JMP16Namespace Exists() semble renvoyer 0 pour l'espace de noms supprimé.
Re : Bug fatal JMP16Oui, je l'ai signalé aujourd'hui également.Je publierai ici toutes les mises à jour – mais je suppose que l'équipe est probablement déjà au courant du problème.
Re : Bug fatal JMP16Cela a-t-il été signalé au support JMP ?