皆さんこんにちは、
私は自分の生活を楽にするためにスクリプトにいくつかの機能を実装しようとしていましたが、保存/未保存のデータテーブルのパス取得に関するバグにつまずいたかもしれません。この振る舞いが他のユーザーに知られている/見られているかどうか、または私のコードが原因である可能性があるかどうかを知りたいです(もしそうなら、ソリューションはもちろん高く評価されます:-))。
実際のダッシュボード内のボタンスクリプトを使用して、作成したダッシュボードとそれぞれのデータテーブルを保存することを目指していました。スクリプトからの関連する抜粋は次のとおりです。
//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。以下)、2回目の実行で、親データテーブルのファイルパスを取得すると、データテーブルが保存されたかのように、個別のファイルパスが返されますが、そうではありません。また、ログからそれぞれの抜粋をコピーし、少し不明瞭なコメントを追加しました。
最初の実行:
dat = DataTable( "XXX");
rootpath = "XXX.jmp"; <-保存されていないデータテーブルの名前!
Bool = 0;
パス=個別のファイルパス」;
ファイルを保存できません。
2回目の実行:
dat = DataTable( "XXX");
rootpath = "ディスクリートファイルパス"; <-データテーブルが保存されているかのように、個別のファイルパス
Bool = 1;
Pick Fileの引数が無効です:「Pick File」のアクセスまたは評価でディレクトリ「discrete file path」が見つかりません、Pick File / * ### * /(「choose directory to save ...」、startpath、
{「JMP / HTMLファイル| jmp; jsl; jrn; html」、「すべてのファイル| *」}、1、1、DashName)<-転送された「ルートパス」が存在しないという事実によるエラー。
このようなものを見た人や、この動作を説明するコードの欠陥を見た人はいますか?
宜しくお願いします、
モルテ
あなたが言っていることを示すためのスクリプトを作れる可能性があれば、大きなクラスか何かを使ってください。
見た目からは、「離散ファイルパス」というパスを使用しようとしていますが、これは私にとってはパスのようなものではありません。 2番目の引数はパスでなければなりません。