検索フラグの所得と分岐No.02404
白雲斎 さん 01/09/07 22:17
 
 白雲斎 と申します。

早速で恐縮ですが、

//----------------------

find;
//grepdialog;
#opt = searchoption;

//----------------------

とあった場合、
#optの値で検索オプションを知るにはどうしたら良いのでしょうか?

ビットの論理和が理解出来ずに、message LOOPで1つずつ値を確認していたの
ですが、何か良い方法はないものでしょうか?

よろしくお願いいたします。

-------------------------------
 ・秀丸 Ver 3.08
 ・Windows 2000Pro sp2
-------------------------------

[ ]
RE:02404 検索フラグの所得と分岐No.02405
TAKA さん 01/09/07 22:45
 
TAKA です。

>ビットの論理和が理解出来ずに、message LOOPで1つずつ値を確認していたの
>ですが、何か良い方法はないものでしょうか?

ループで回すなら以下の通りです。

// テストマクロ(ここから)
    #Opt = searchoption;
    #Bit = 0x01;
    #I = 0;
    while( #I < 8 )
    {
        if( ( #Opt & #Bit ) != 0 )
        {
            if( #I == 0 )       message "単語の検索";
            else if( #I == 1 )  message "大文字/小文字";
            else if( #I == 2 )  message "置換";
            else if( #I == 3 )  message "問い合わせ";
            else if( #I == 4 )  message "正規表現";
            else if( #I == 5 )  message "あいまい検索";
            else if( #I == 6 )  message "ファイル名一覧";
            else if( #I == 7 )  message "次の秀丸";
        }
        #Bit = #Bit * 2;
        #I = #I + 1;
    }
// テストマクロ(ここまで)

[ ]
RE:02405 検索フラグの所得と分岐No.02406
白雲斎 さん 01/09/08 18:21
 
 白雲斎 と申します。

TAKAさん、ご教授ありがとうございます。

>ループで回すなら以下の通りです。

教えていただいた方法で検索フラグを得る事が出来ました。

その理屈を自分自身が理解出来てからと思い、返信が遅れた事を申し訳なく
思います。(まだ、完全には理解出来ていないけど)

[ ]
RE:02406 検索フラグの所得と分岐No.02407
TAKA さん 01/09/08 18:48
 
TAKA です。

>その理屈を自分自身が理解出来てからと思い、返信が遅れた事を申し訳なく
>思います。(まだ、完全には理解出来ていないけど)

「&」とはAのビット列を「0011」Bのビット列を「0101」としたと
きに、&を取ると以下のように「0001」となります。

 A 0011
 B 0101
-------
 & 0001

つまり、両方のビットが1のものだけを1とします。
ビットが立っているかどうかをチェックするには、その場所に1を
立てたものと「&」を取ることで可能です。

単語の検索のビットだとビット0(一番右)なので、「00000001」、
大文字/小文字のビットはビット1(右から2番目)なので、
「00000010」、との「&」を取ればよいことになります。
もし結果が0ならそのビットは立っていないことになります。逆に
言えば、0以外ならそのビットは立っていることになります。

[ ]
RE:02407 検索フラグの所得と分岐No.02408
白雲斎 さん 01/09/10 19:07
 
 白雲斎 と申します。

>単語の検索のビットだとビット0(一番右)なので、「00000001」、
>大文字/小文字のビットはビット1(右から2番目)なので、
>「00000010」、との「&」を取ればよいことになります。
>もし結果が0ならそのビットは立っていないことになります。逆に
>言えば、0以外ならそのビットは立っていることになります。

説明までしていただき、遅ればせながらお礼を申し上げます。

無い頭を絞って、ビット演算をものに出来るようがんばります。

[ ]