過去の桐井戸端BBS (桐ver.8)
9128 配列変数の中で「ある値」が要素の何番目に当たるのかを調べたい mudagami 2000/12/26-20:25
配列変数について質問いたします。
関数の#対応番号()の様な、配列変数の中の"ある値"が要素の何番目に当たるか求める関数なりコマンドはないものでしょうか?
ここ数日、必ずあるはずだとマニュアルのあちらこちらを探していますがかいもく見当がつきません。
やむおえずも情けなく、配列変数は諦めて
#対応番号()を使って処理しています。

9131 配列番号を調べる関数はありません 佐田 守弘 2000/12/26-23:15
記事番号9128へのコメント
mudagamiさん
御質問の
>関数の#対応番号()の様な、配列変数の中の"ある値"が
>要素の何番目に当たるか求める関数なりコマンド
は存在しません。
一般論として意味がないからなのかも知れません。

たとえば、&X[10]の全ての値が0だとします。
この場合、「値が0であるのは何番目ですか?」は、何を調べる事になるのでしょうか。
値が0である最も若い番号を求めるのか、最後の番号を求めるのか、あるいは全ての番号を求めるのかが決まっていません

あえて一括処理コマンドで行うなら、
繰り返し &i=<最終値>,1,-1
 条件 (&X[&i]=<比較値>) &番号=&i
繰り返し終了
を実行してみて下さい。
&X[&i]=<比較値> が成り立つ最も若い &i の値が求められます。

佐田守弘(KS-00119)


9138 ありがとうございました。 mudagami 2000/12/27-12:02
記事番号9131へのコメント
 佐田さん、お答えありがとうございます。
やはり関数は存在しないのですね。
 項目数の多いフォームの中で上下の矢印キーのみ(ShiftやCtrlを押さない)で、項目間の移動をさせようとし、

オブジェクト名を配列変数の中に代入し、キーダウンイベントの中で"フォーカスオブジェクト取得(&focus)"
&focus が配列の何番目にあたるかを調べ、
矢印キーによって次のフォーカスを設定(&focusが何番目の値か分かれば、その前後の値を取り出せることで次のフォーカスを設定できる)

と、いうような使い方をしたいと思っていたのですが。
やむをえず#対応番号()を使っています。
どうもありがとうございました。

PS.
 掲示板の少し前の質問で、佐田さんが#表引き2で項目を数値で指定でき、式も使えると書いていたのを拝見し、
式が使えることを初めて知りました。
それまでは、数値で指定できるだけでいったい何のために#表引き2は存在するのか!! と疑問でした。
DOS版の方のマニュアルを注意して見ると確かに(数値式)と書いてありますね。
(Windows版の方にはハッキリ書いていました)長い間の疑問が解けました。

戻る