list_box タイルの値は先頭にスペースを含んでいることがあるので(特に複数の項目を取得した場合)、文字列の比較により値をテストすることは避けてください。
リスト ボックスを処理する前に、まず atoi 関数を使用して list_box の値を整数に変換してくださいまた read 関数を使用して、トークンを整数に自動的に変換することもできます。たとえば、justone という名前のリストが 1 つの選択肢しか受け入れない場合、次のコードはリストの 3 番目の項目が選択されたどうかをチェックします。
(setq index ( get_tile "justone")) (cond ((/= index "") ;See if string is empty. (= 2 (atoi index)) . ; Process the third entry. . . ) )
atoi 関数は文字列 "0" だけでなく、空の文字列に対しても 0 を返すため、値が 0 の場合は空の文字列どうかをチェックする必要があります。
ポップアップ リストの値は先頭にスペースが含まれないため、値を変換する必要はありません。ポップアップ リストは、複数の項目を選択できません。
リスト ボックスが複数項目の選択をサポートする場合、プログラムは変換を行って、value 文字列の中の複数の値を 1 つずつ調べなければなりません。次の MK_LIST の定義は、ユーザが元の displist から選択した項目だけを含むリストを返します(この例では、ディスプレイ リスト displist はグローバル変数として保持されます)。MK_LIST 関数は、リスト ボックスの現在の $value を引数にして呼び出されます。
(defun MK_LIST (readlist / count item retlist) (setq count 1) (while (setq item (read readlist)) (setq retlist (cons (nth item displist) retlist)) (while (and (/= " " (substr readlist count 1)) (/= "" (substr readlist count 1))) (setq count (1+ count)) ) (setq readlist (substr readlist count)) ) (reverse retlist) )
上記の 2 つの例はどちらも、単一項目の選択にも使用できます。