嗨,大家好,
我试图在脚本中实现一些功能以使我的生活更轻松,并且可能偶然发现了有关已保存/未保存数据表的路径检索的错误。我想知道此行为是否已知/是否已被其他用户看到,或者是否可能是由我的代码所引起的(如果可以,当然可以高度赞赏该解决方案:-))。
我的目标是通过实际仪表板中的按钮脚本保存构造的仪表板和相应的数据表。这是脚本的相关摘录:
//set root path to nothing
rootpath = "";
// create link to the "parent data table"
cw = current window ();
ListBivar = (cw << xpath("//OutlineBox[@helpKey='FitGroup']"));
script = ListBivar[1] << get scriptable object;
dat = script << get data table;
DashName = dat << get window title;
show (dat);
// retrieve file path of "parent data table"
rootpath = dat << get path;
show (rootpath);
Bool = Contains (rootpath, "discrete file path" );
show (Bool);
If (Bool == 1, startpath = rootpath,
Bool == 0, startpath = "discrete file path",
);
path = Pick file ("choose directory to save...", startpath, {"JMP/HTML files|jmp;jsl;jrn;html", "All files|*"}, 1, 1, DashName);
show (path);
If ( path == "", Throw (1) ,
If(Right(path, 4) != ".jmp",
path = path||".jmp";
dat << save (path),
dat << save (path)
)
);在常规条件下,这确实可以很好地工作。当我尝试通过此对话框选择一个已经存在的文件来替换它时,我开始遇到麻烦,但是旧文件仍然打开。当然,这会引发错误消息。如果现在我关闭旧文件并再次尝试替换该文件,我仍然会收到一条错误消息,这次提示了我的脚本。看起来(cp。如下所示),在第二次运行中,对父数据表的文件路径的检索将返回一个离散的文件路径,就好像该数据表已保存一样(不是这种情况)。我还从日志中复制了各自的摘录,并有一些晦涩之处和其他注释:
第一次运行:
dat = DataTable(“ XXX”);
rootpath =“ XXX.jmp”; <-未保存数据表的名称!
布尔= 0;
path =离散文件路径”;
无法保存文件。
第二次运行:
dat = DataTable(“ XXX”);
rootpath =“离散文件路径”; <-离散文件路径,就像已保存数据表一样
布尔= 1;
选择文件中的参数无效:在访问或评估“选择文件”时找不到目录“离散文件路径”,选择文件/ * ### * /(“选择要保存的目录...”,开始路径,
{“ JMP / HTML文件| jmp; jsl; jrn; html”,“所有文件| *”},1、1,DashName)<-由于存在以下事实而导致错误:传输的“根路径”不存在。
有没有人看到这样的东西,或者有人看到代码中的缺陷可能解释了这种行为?
最好的祝福,
马尔特
只要有机会,您就可以使用大类之类的东西编写脚本来表达您的意思。
从它的外观来看,您正在尝试使用“离散文件路径”路径,该路径看起来并不像我的路径。 第二个参数必须是路径。