Problème avec une variable créée appelée "section"

skirsch1 shared this problem 2 months ago
Not a Problem

Bonjour,


j'ai créé un fichier Geogebra il y a 2 mois lié à un quiz interactif sur les sections de tétraèdre.

L'idée est de générer aléatoirement la position de 3 points sur le tétraèdre, puis de permettre aux élèves de construire la section du tétraèdre passant par le plan défini par les trois points.

Afin de suivre les différentes constructions réalisées par l'élève, j'utilise l'onglet Javascript Global, et un code dans la fonction "function ggbOnInit() {}". Typiquement, ce code enregistre tout ce que construit l'élève et le référence dans un liste. Si l'élève construit un polygone, le code le renomme automatiquement "section", pour après comparer ce polygone avec celui qui est correct. Ce code a très bien fonctionné pendant plusieurs semaines.

Aujourd'hui, je rouvre le code, et lorsque je construis un polygone (à la façon que les élèves le feraient), j'obtiens le message d'erreur suivant :

"Commande Renommer:

Argument illégal: Texte "sec(t ì on)"


Or, je n'utilise pas exactement cette écriture, voici celle que j'utilise (en anglais évidemment puisque Javascript) :

ggbApplet.evalCommand("Rename(" + obj + ",section)");


Voici donc mes deux questions :

  • comment se fait-il que cela fonctionnait il y a presque 2 mois et que cela ne fonctionne plus maintenant? Y a-t-il eu une mise à jour de Geogebra qui créé une commande "sec()" qui interfère avec le nom que j'ai donné à ma variable?
  • Comment faire pour solutionner le problème? Dois-je changer le nom que je donne à ce polygone (qui est faisable, mais vu que j'ai fait le code il y a un moment, va pas falloir que j'oublie une occurrence de cette variable dans tous les recoins du prog, ce qui peut être "tricky"...), ou dois-je simplement attendre une autre mise à jour qui solutionnerait le problème?

D'avance un grand merci pour votre aide! Je ne vous joins pas le fichier qui est un peu (même fort) compliqué à lire, mais je copie-colle ci-dessous le code que j'utilise dans l'onglet Javascript Global, si ça peut vous aider...


function ggbOnInit() {

ggbApplet.evalCommand("L_{obj}:={}");

ggbApplet.evalCommand("nb_{obj}:=Length(L_{obj})");

ggbApplet.registerAddListener("Espion");

}


function Espion(obj) {

a = ggbApplet.getObjectType(obj);

if (' ' + a == " triangle") {

ggbApplet.evalCommand("Delete(section)");

ggbApplet.evalCommand("Rename(" + obj + ",section)");

ggbApplet.evalCommand("SetValue(sectiontest,0)");

ggbApplet.evalCommand("SetValue(L_{obj},nb_{obj}+1,Name(section) )");

ggbApplet.evalCommand("ShowLabel(section,true)");

ggbApplet.evalCommand("SetLayer(section,4)");

}

if (' ' + a == " quadrilateral") {

ggbApplet.evalCommand("Delete(section)");

ggbApplet.evalCommand("Rename(" + obj + ",section)");

ggbApplet.evalCommand("SetValue(sectiontest,0)");

ggbApplet.evalCommand("SetValue(L_{obj},nb_{obj}+1,Name(section) )");

ggbApplet.evalCommand("ShowLabel(section,true)");

ggbApplet.evalCommand("SetLayer(section,4)");

}

if (' ' + a != " quadrilateral" && ' ' + a != " triangle") {

ggbApplet.evalCommand("SetValue(L_{obj},nb_{obj}+1,Name(" + obj + ") )");

ggbApplet.evalCommand("ShowLabel(" + obj + ",true)");

ggbApplet.evalCommand("SetLayer(" + obj + ",4)");

}

}

Best Answer
photo

        ggbApplet.evalCommand("Rename(" + obj + ",section)");
should be something like this

        ggbApplet.evalCommand("Rename(" + obj + ",\"section\")");

Comments (9)

photo
1

Please post your file

photo
1

Ok no problem.


The file is quite complex, mostly because it's not really optimised (I don't know enough of Java to enhance the coding lines...)

photo
1

What do you have to do exactly to get the error?

photo
1

Also make sure you are using the latest version

photo
1

Yes I haven't explained that, sorry. If you create and close a polygon using the tool, this error will appear.

Well, I am not sure I have the latest version of Geogebra, but the file is also online and I get the same error when creating a polygon (even though the detail of the error is not very explicit online).

photo
photo
1

        ggbApplet.evalCommand("Rename(" + obj + ",section)");
should be something like this

        ggbApplet.evalCommand("Rename(" + obj + ",\"section\")");

photo
1

Thanks it works!

Can you explain (or direct me to a link that explains) what does "\" do, and why one backslash is between the two double quotation marks, and the other one is not?


Thank you very much!

photo
1

\" lets you put " inside "..."

photo
1

Ok....

Last question, then I stop bothering you ^^

Do you have a link, a reference I can read to learn more (and ideally quickly) about Java programming in Geogebra specifically?


Thanks again for your help!

© 2020 International GeoGebra Institute