秀丸Q&A集原稿 - KZ9905ANo.00589
番頭++ さん 99/05/17 12:08
 
マクロ Q & A

========================================================================

●strstr 関数を使用した入力チェック

Q:

入力チェック、変数のチェックを行うとき if の文が複雑になります。それをで
きるマクロの関数はありますか ?

A:

  チェック専用の関数はありませんが、入力チェックをするときに、色々な値が
ある場合には、if で strstr 関数を使用すると文が簡単になります。

//  a1.mac
    $wk1 = input("血液型を入力してください!","");
    if( $wk1 == "O" || $wk1 == "A" || $wk1 == "B" || $wk1 == "AB" ){
        message "血液型 : " + $wk1;
    } else {
        message "間違った血液型です !";
    }
endmacro;

//  a2.mac
    $wk1 = input("血液型を入力してください!","");
    if( strstr("|O|A|B|AB|","|"+$wk1+"|") != -1 ){
        message "血液型 : " + $wk1;
    } else {
        message "間違った血液型です !";
    }
endmacro;

  この a1.mac と a2.mac は同じ結果となります。"|" は、一般的には区切文字
 (区切記号) と呼ばれ、入力文字としてありえない文字を使用すると文が見やす
くなります。全角文字 (Shift-JIS の場合) を処理するときには、! - / などの
 0x40 (16 進数) より小さなもじを区切文字にします。

  全角半角の文字が混在するときは完璧なチェック方法にはなりませんが、実用
レベルには耐えるでしょう。


========================================================================

●簡単なニューメリックチェック法

Q:

簡単なニューメリックチェック法はありませんか ?

A:

  入力がニューメリック(数値、整数)であるかのチェックは厳密に行うと複雑な
ロジックになりがちです。ここでは簡単なチェック方法を示します。

//  a1.mac
    $wk1 = input("数値を入力してください!","");
    if( $wk1 == str(val($wk1)) ){
        message "数値 : " + $wk1;
    } else {
        message "数値ですか ! \n" + $wk1;
    }
endmacro;

  入力文字列を、val 関数で数値にして、次に str 関数で文字列にして、最初
の入力文字列と比較しています。完璧なチェック方法ではありませんが、実用レ
ベルには耐えるでしょう。この例では、+ 符号、全角文字 (数字) の考慮はあり
ません。


========================================================================

[ ]