嗨,大家好,
我試圖在腳本中實現一些功能以使我的生活更輕鬆,並且可能偶然發現了有關已保存/未保存數據表的路徑檢索的錯誤。我想知道此行為是否已知/是否已被其他用戶看到,或者是否可能是由我的代碼所引起的(如果可以,當然可以高度讚賞該解決方案:-))。
我的目標是通過實際儀表板中的按鈕腳本保存構造的儀表板和相應的數據表。這是腳本的相關摘錄:
//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)<-由於存在以下事實而導致錯誤:傳輸的“根路徑”不存在。
有沒有人看到這樣的東西,或者有人看到代碼中的缺陷可能解釋了這種行為?
最好的祝福,
馬爾特
只要有機會,您就可以使用大類之類的東西編寫腳本來表達您的意思。
從它的外觀來看,您正在嘗試使用“離散文件路徑”路徑,該路徑看起來並不像我的路徑。 第二個參數必須是路徑。