input文の判定法No.06277
W.Hiroshi さん 10/02/10 22:52
 
いつもお世話になっています。W.hiroshiです。
Windows XP sp3  秀丸v8β40

もしかすると、とても簡単なことなのかもしれませんが、ちょっと教えて頂きたいこ
とがあります。

マクロの中で、

$x = input("X の加算値");
$y = input("Y の加算値");
$z = input("Z の加算値");

として、数値入力するのですが、この時
全てに、何も入力しない、もしくは全てに「0」を入力して「OK」を押したとき
三つのうちいずれかで「キャンセル」を押したとき
その後のマクロを実行しないでマクロを終了するにはどうしたらいいでしょうか。

三つとも何も入力しないとか、「キャンセル」を押したときの判定方法がいまいち理
解できなかったもので。

[ ]
RE:06277 input文の判定法No.06278
Iranoan さん 10/02/10 23:12
 
 W.Hiroshi さん今日は、Iranoan です。
> $x = input("X の加算値");
<snip>
> 三つとも何も入力しないとか、「キャンセル」を押したときの判定方法がいまいち理
> 解できなかったもので。
 input() 関数は、[キャンセル] された場合は、result == false == 0 にな
ります。空かどうかは、そのまま input() 関数の返り値で判断できます。お
およそ次の要領でどうでしょう。
//------------------------------------------------------------
call Input "X の加算値";
#x = ##return;
call Input "Y の加算値";
#y = ##return;
call Input "Z の加算値";
#z = ##return;
//やりたい処理
endmacro;

Input:
  while( 1 ){
    $$s = input( $$1 );
    if( !result )endmacro;//[キャンセル] は終了
    //以下の例外処理はお好みで
    if( $$s == "0" )return 0;
    ##n = val( $$s );
    if( $$s != "" && ##n != 0 )return ##n;//空だったり文字だったら再取得
  }

[ ]
RE:06278 input文の判定法No.06279
W.Hiroshi さん 10/02/11 09:41
 
Iranoanさん こんにちは。

お世話様です。

「キャンセル」は
if( !result ) で分かるんですね。

>空かどうかは、そのまま input() 関数の返り値で判断できます。

イメージとしてはだいたい理解していたのですが、

三つ全てが空、どれか一つでもデータが入ったら他は空でも可
と言うので、行き詰まっていました。

Iranoanさんのマクロ文を参考にして、書き直してみたら何とかうまく行きました。
有り難うございました。

[ ]