Collistbox() で Try() を使用するとエラーが発生します基本的に、さまざまな表示ボックスを含むカスタムの対話型ウィンドウを構築しており、for ループで選択入力を簡素化しようとしています。 たとえば、コンボボックスとコリストボックスの両方があり、ループステートメントを使用して両方の入力を取得しようとしています。 しかし、これを行うと、代わりにエラーが発生しました。 式を間違って書いていますか? (エラーログ添付)
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Col List Box Example",
vlistbox(
var1 = combobox({"one", "two", "three"}),
hlistbox(Col List Box( all, width( 250 ), maxSelected( 1 ) ),
var2 = Col List Box()
)
)
);
var2 << append("height");
AA = {"",""};
for(i=1,i<=2,i++,
temp1 = "var"||char(i);
eval(
substitute(
expr(try(AA[i] = expr.temp1 << get, AA[i] = expr.temp1 << get items)), //try to use get, if error, use get items
expr(expr.temp1),parse(temp1)
)
)
);
show(AA);
スクリプティングRe: Collistbox() で Try() を使用するとエラーが発生しますListBoxBox (ログに記録するメッセージのみ) で使用すると << Get はエラーを発生させないため、Try は機能しないと思います。 この方法で値を取得したい場合は、たとえば << Class Name:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
New Window("Col List Box Example",
V List Box(
var1 = Combo Box({"one", "two", "three"}),
H List Box(Col List Box(all, width(250), maxSelected(1)), var2 = Col List Box())
)
);
var2 << append("height");
AA = {"", ""};
For(i = 1, i <= 2, i++,
temp1 = "var" || Char(i);
Eval(
Substitute(
Expr(
If(expr.temp1 << class name == "ComboBox",
AA[i] = expr.temp1 << get
,
AA[i] = expr.temp1 << get items
)
), //try to use get, if error, use get items
Expr(expr.temp1), Parse(temp1)
)
);
);
Show(AA); //AA = {1, {"height"}};
私は通常、このような値を取得しないことをお勧めし、変数名を動的に作成する以外の方法を見つけようとします (たとえば、リストまたは連想配列への参照を格納します)。