テーブルスクリプトを実行する緑色の再生アイコンを使用してテーブル スクリプトを実行する場合と、テーブル スクリプトを実行する場合の違いは何ですか。

...実行ボタン経由でもですか?

自動化とスクリプトRe: テーブル スクリプトの実行違いがあると疑う理由はありますか? スクリプトの「ウィンドウ」から、たとえば、ハイライト表示して個別の部分を実行できます。
Re: テーブル スクリプトの実行彼らは大体同じことをします。
小さな緑の矢印の方が速く、ワンクリックです。
: )
Re: テーブル スクリプトの実行テーブル スクリプトの「タイミングの問題」に対する 3 番目の「解決策」を考案した後 - 残念ながら、実際の成功には至りませんでした。
... 実際の違いは次の通りであることがわかりました。
- 再生アイコンからスクリプトを実行→問題
- スクリプト ウィンドウを開き ([新しいコードを試すか、何もしないか])、 [実行]ボタンをクリック → 問題なし。
Re: テーブル スクリプトの実行緑の実行矢印をクリックして実行すると、スクリプトが添付されているデータ テーブルでスクリプトが実行されます。
編集ウィンドウからスクリプトを実行すると、現在アクティブなデータ テーブルでスクリプトが実行されますが、スクリプトが保存されたデータ テーブルではない可能性があります。
Re: テーブル スクリプトの実行私もそう思いました ...
Re: テーブル スクリプトの実行良いアイデア、
しかし実際には、「編集」モードでは、実行をクリックする前に「自分のテーブル」をアクティブにすることに注意しました。
そして、「編集」モードが機能する:)
おそらく、コード内のどこかにある現在のデータ テーブル() に関連しているのでしょう。スクリプトが再生アイコンから開始された場合、または実行ボタンから開始された場合、動作が異なる場合があります。
ただ置くだけ:)現在のデータ table() をテーブル スクリプトに直接インポートすると、2 つのアプローチの間に違いは見られませんでした。
しかし、私のコードは、JSL、メイン メニュー (" ... ")、ファイルのオープン、結合、連結などの長いチェーンです...
違いを示すために複雑さを軽減するか、匿名化された例を生成してみます...
Re: テーブル スクリプトの実行追加してみました
current data table();
スクリプトが保存されているデータ テーブルにスクリプトがポイントされるかどうかを確認しましたが、ポイントされませんでした。スクリプトは、現在のデータ テーブルが何であれ、そのデータ テーブルに対して実行されました。
Re: テーブル スクリプトの実行どちらの場合も、現在のデータ テーブル() は信頼できません。緑の三角形を押した直後に新しいテーブルが開いた場合、スクリプトが実行される前に現在のテーブルが変更される可能性があります (緑の実行ボタンで発生する可能性は低いですが、発生する可能性はあります)。次のようなスクリプトでテストするのはかなり簡単です。
wait(1);
Caption(Current Data Table() << get name);
緑色の三角形を押してスクリプトを実行し、すぐに Ctrl + N を押して新しいテーブルを作成します。
ただし、Current Data Table() を省略すると、スクリプトが実行されたテーブルでトリガーされるようです (どちらの場合も)
wait(1);
Current Data Table() << New Column("A");
対
wait(1);
New Column("A");
Re: テーブル スクリプトの実行私の問題について
結局、タイミングの問題だった
...Jarmo が説明したように - ただし、逆のようです:
カスタマイズされたアドインを使用してファイルを読み込みます。
メインメニューは戻り値を返すことができないので:(、
新しく作成されたテーブルにアクセスするために現在のデータテーブル()を使用しました
これがそのアイデアでした...
//<FONT face="courier new,courier">開く( "$SAMPLE_DATA/Big Class.jmp" );</FONT><BR />Main Menu("load_");
// wait(1);
dt= current data table(); // the idea: myDT
caption(dt << get name())
a) Open( "$SAMPLE_DATA/Big Class.jmp" )を使用するだけで、すべてがスムーズになります。
一方、メインメニュー("load_")からデータテーブルを開いた後、
現在のデータ テーブルはまだメイン テーブルを参照しています (!)。
wait(1)を有効にすると、1 秒のペナルティ料金で問題は解決しました。
b) より堅牢に (そして高速に) するために、 FUNC 内にテーブル参照:::load_:myTableを作成し、現在のデータ table()を介した元のアプローチの代わりにdt=:::load_:myTableを使用しました。
面白い:
:::load_:myTable を介したアプローチはwait(1) なしで機能します。
つまり、現在のデータ テーブルを取得する前に、新しいテーブルと通信できるということです。
したがって、データテーブルが現在のデータテーブルを取得する速度を調べる価値があるかもしれません。
...そしてなぜ違いがあるのか。
Re: テーブル スクリプトの実行議論の最初に戻って、編集ウィンドウの緑色の再生アイコンと「実行」ボタンの違いについて説明します。
@Byron_JMP は次のように書いています:
彼らは大体同じことをします。
小さな緑の矢印の方が速く、1 回クリックするだけです。
: )
問題は、現在のデータ テーブル ()が適切に定義されていないという発見に帰着します。
緑色の再生ボタンを使用して結果ウィンドウを確認すると、次のシーケンスが表示されます。
1) アドインはテストを開き、現在のデータテーブルがテストに変更されたことを報告します。
2) メイン テーブルは、 check_current_data_tableが現在のデータ テーブルであるとまだ認識しています (!!!)
3) wait(0)の後は、より適切な判断が下され、 testが返されます。
一方、編集ウィンドウの RUN ボタンを使用してスクリプトを開始すると、3 つの結果ウィンドウすべてに現在のデータ テーブル ()と同じテーブルが表示されます。
メインスクリプト:
Names Default To Here( 1 );
Main Menu( "load_" );
win = new window("1 ",Text Box ("main table (1):\!n" ||
(current data table() << get name())));
wait(1);
win = new window("2 ",Text Box ("main table (2):\!n" ||
(current data table() << get name())));負荷_:
Names Default To Here( 1 );
dt = open("C:\temp\test.csv");
Caption( {100, 200}, "postprocessing ...");
win = new window("addIn", text box("inside the addin:\!n" ||(current data table()<< get name())));
// win << moveWindow( 100, 100 );
Caption( remove );
さらに深く掘り下げていくと、AddIn 内の<< moveWindowを有効にしたり、キャプションコマンドの 1 つを無効にしたりするといった細かい点が動作に影響を与えることがわかります。
Re: テーブル スクリプトの実行ちなみに同じ問題:
現在のデータテーブル()を適切に定義したものが 1 つもありません。
この投稿のきっかけとなった問題もありました: ThisDataTable() ?
同じバグ修正:
待機を追加 ( 0 )
の前に
dt = 現在のデータテーブル()!