やあ、
基本的に、関数内で作成された変数にアクセスしようとしています。 その変数を関数の外で出力しようとしていますが、名前が未解決/削除された参照 'Glue' エラーが発生し続けます。 基本的に、新しいウィンドウを作成し、その関数とウィンドウの作成内に lf の値を保存するボタンの関数があります。 lf の値を出力できるようにしたいのですが、方法がわかりません。 ご提案をいただければ幸いです。 もう 1 つの質問は、OKscript1 関数内で lf を出力すると、ログに出力されないということです。 OKscript1が関数ではなくExprだからでしょうか? また、ファイルを選択した後に初めてプログラムを実行すると、名前が解決されていないというエラーが発生します。 しかし、再度実行して別のファイルを選択してログを表示すると、終了する前に選択していた前のファイルがログに表示されます。 その理由について何か考えはありますか? おそらくそれは私が見落としていた非常に単純なことか、私のスコープに関係があるかのどちらかだと思いますか?
mainWindow = New Window("Instruction Tagger",
ob = Outline Box("Instruction Tagger",
Border Box(Left(3), top(2),
V List Box(
H List Box(
Panel Box("Please choose one of the following options:", <<MARKUP> 1), Throw ("Error: Please only select one measurement file. Alternitavely, go back and select 'Tag Multiple Files'. "));
if(Try(N Items(lf) < 1), Throw ("Error: Please select one measurement file.Alternitavely, go back and select 'Tag Multiple Files'."));
);
print(lf);
print(lf); </MARKUP>
やあ@cwillden 、
助けてくれて本当にありがとう。 テキストを太字にするタグがあるはずだったのでマークアップを使用していましたが、タグを削除したことに気づきました。 一貫性を保つために、スローとテキスト ボックスをキャプションに変更しました。 改めてご説明いただきありがとうございます。
やあ@ジャズ、
このスクリプトはわかりにくかったので、インデントを修正しました。<
ここでいくつかの問題があります。スクリプトを実行すると、ユーザーがダイアログで何かを行う前に、下部にある「print(lf)」行が実行されます。JMP に印刷を要求するときには、「lf」はまだ存在しません。ユーザーが OK を押したときにのみコード行が実行されるように、これを OKScript1 式内に置く必要があります。
また、ListF はもう存在しないため、ListF から項目を取得する前にウィンドウを閉じることはできません。そのコード行はコメントアウトされているため、それが「オブジェクト参照の削除」エラーの原因であるかどうかはわかりません。
以下のスクリプトは動作するようです。エラーは発生せず、print(lf) は機能します。選択したファイルがログのリストに表示されました。
mainWindow = New Window("Instruction Tagger",
ob = Outline Box("Instruction Tagger",
Border Box(Left(3), top(2),
V List Box(
H List Box(
Panel Box("Please choose one of the following options:",
Button Box("Tag a Single File", singleFileButton1("Tag Instructions to Data") ),
Button Box( "Tag Multiple Files", singleFileButton1("Tag Instructions to Data") ),
Text Box("Note: a button to tag the data will appear automatically after you have selected the measurement & PFD files. ")
)
)
)
)
)
);
singleFileButton1 = Function({x},
mainWindow << Close Window;
choosingFilesWindow = New Window(x,
ob = Outline Box("Select Your Files: ",
Border Box (Left(3), top(2)),
vDisplay = V List Box(
H List Box(
Panel Box("Please select one of the options below to choose your measurement & PFD file: ",
Button Box("Select Measurement File", selectMeasurementFileButton("Select Measurement File")),
Button Box("Select PFD File", selectPFDFileButton("Select PFD File")),
Lineup Box (N Col(2), Spacing(3)),
Panel Box("Files Added",
CB = Check Box({"Measurement file added", "PFD file added"},<<SET> 1), Throw ("Error: Please only select one measurement file. Alternitavely, go back and select 'Tag Multiple Files'. "));
if(Try(N Items(lf) < 1), Throw ("Error: Please select one measurement file.Alternitavely, go back and select 'Tag Multiple Files'."));
);</SET>最後の「成功」の if ステートメントを変更することをお勧めします。すでに Throw() を使用してさらなる処理を停止しているため、CB << Set(1,0) が評価されるとは思いません。そのボックス内の Throw() を Caption() に置き換えることを検討してください。これにより、「成功」メッセージが Throw() の場合のようにエラーのように見えなくなります。