问题
所以这是交易,我做了很多关于一般和特定受众的JMP主题。不仅是不同的受众,而且我在同一台笔记本电脑上使用Mac和PC虚拟机。
我最大的问题是链接到JMP期刊中的文件。 如果日志是用于PC,那么我的路径可能看起来像“y:\ Byron \ Example \ ..”但如果它在Mac中那么它看起来更像“/ Users / Byron / Examples / ..”这意味着我要么将每个文件链接编码为特定于操作系统,或者我为PC和Mac构建两个版本的日志。
解
我一直在写JSL多年,直到与Joseph Morgan和Jeff Polzin进行午餐谈话之后才点击。(实际上,这是他们的谈话,我只是在倾听,在一个美好的一天,JMP重量只是我联盟的一点点。)
在JSL中,我们可以设置路径变量。我一直在使用“$ Sample_Data \ Big Class.jmp”,而“$ Sample_Data”部分是一个路径变量,它指示JMP从示例数据目录中获取文件。 设置路径变量非常简单,只需提供名称和路径,如下所示:
Set Path Variable( "Examples", "Y:\Byron Wingerd\Examples" )
所以现在我可以使用文件名“$ Examples \ eraseme.jmp”或类似的东西:
open("$Examples\eraseme.jmp")
得到这个文件。
将常规日志移动到客户特定文件夹时,这非常方便。由于日志和客户特定数据文件位于同一目录中,因此我不必使用路径来获取这些文件,如果我使用“$ Examples \ ...”链接到链接工作的常规文件。 但这只是一个小解决方案。更大的问题是在PC和Mac之间切换。
为了处理不同的操作系统,我使用JSL根据操作系统定义Examples路径,如下所示:(这是非常棒的部分!)
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" ));
如果我在JMP会话开始时(或从我的日志中的按钮)运行一点JSL,那么将在主机操作系统中正确评估“$ Example”。 这意味着文件链接“$ Examples \ eraseme.jmp”打开“eraseme.jmp”,无论打开Journal是哪个操作系统。
讨论
现有脚本的快速而简单的方法是在脚本按钮中添加此JSL以解决问题。
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" ))
);
这给了我一个快速文本框消息,让我知道路径设置。
我确信至少有十几种方法可以解决这个问题/这种方法很容易在现有的期刊上使用,链接可以在不同的人之间共享。如果您有类似或更好的方法,请发布它们,我很想知道其他人是如何解决这个问题的。