Problème
Donc, voici le contrat, je présente beaucoup de sujets sur JMP pour des publics généraux et spécifiques. Non seulement différents publics, mais j'utilise également un Mac et une machine virtuelle PC sur le même ordinateur portable.
Mon gros problème concerne les liens vers les fichiers des journaux JMP. Si le journal est pour PC, mon chemin peut ressembler à "y: \ Byron \ Example \ .." mais s'il est sous Mac, il ressemblera davantage à "/ Utilisateurs / Byron / Exemples / ..". Cela signifie que je Codez chaque lien de fichier en fonction du système d’exploitation, ou j’ai construit deux versions du journal pour PC et Mac.
Solution
J'écris JSL depuis des années et cela ne s'est pas produit avant une conversation avec Joseph Morgan et Jeff Polzin. (En fait, c’était leur conversation, j’écoutais simplement, un bon jour, les poids lourds JMP un peu en dehors de ma ligue.)
En JSL, nous pouvons définir une variable de chemin. J'utilise depuis toujours "$ Sample_Data \ Big Class.jmp" et sa partie "$ Sample_Data" est une variable de chemin qui demande à JMP d'extraire le fichier du répertoire de données exemple. Définir une variable de chemin est très simple, il suffit de fournir le nom et le chemin comme ceci:
Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" )
Alors maintenant, je peux utiliser le nom de fichier "$ Examples \ eraseme.jmp" ou quelque chose comme ceci:
open("$Examples\eraseme.jmp")
pour accéder à ce fichier.
C'est très pratique lorsque je déplace un journal général dans un dossier spécifique au client. Étant donné que les fichiers de données spécifiques au journal et au client se trouvent dans le même répertoire, je n'ai pas besoin d'utiliser un chemin pour les obtenir. Si j'utilise "$ Examples \ ..." pour créer un lien vers les fichiers généraux, le lien fonctionne. Mais ce n'est qu'une petite solution. Le plus gros problème est de basculer entre PC et Mac.
Pour traiter avec différents systèmes d’exploitation, j’utilise JSL pour définir le chemin d’exemple en fonction du système d’exploitation, comme suit: (C’est la partie vraiment intéressante!)
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
Si je lance le petit morceau de JSL au début de ma session JMP (ou à partir d'un bouton de mon journal), alors "$ Example" sera évalué correctement dans le système d'exploitation hôte. Cela signifie que le lien de fichier "$ Exemples \ eraseme.jmp" ouvre "eraseme.jmp" quel que soit le système d'exploitation dans lequel le journal est ouvert.
Discussion
Pour les scripts existants, la solution simple et rapide consiste à ajouter cette JSL à un bouton de script afin de régler les problèmes.
Names Default To Here( 1 );
If( Host is( Mac ), Set Path Variable( "Examples", "/Users/bywing/Byron Wingerd/Examples" ));
If( Host is( Windows ), Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" ));
pvex = Get Path Variable( "Examples" );
Dialog(
Title( "PATH VARIABLE SET!" ),
vlist(pvextb1 = Text Box( "Path variable $Examples set to:" ),
pvextb2 = Text Box( pvex ),
Button( "OK" ))
);
Cela me donne un message rapide de zone de texte pour me faire savoir que le chemin est défini.
Je suis sûr qu'il existe au moins une douzaine de façons de traiter ce problème / Cette approche est facile à utiliser dans les revues existantes avec des liens partagés entre différentes personnes. Si vous avez des méthodes similaires ou meilleures, merci de les poster, je suis curieux de voir comment d’autres personnes résolvent ce problème.