Grepが止まる No.00053
なむnomoto さん 07/04/11 14:57
 
山紫水明さん
                 なむnomotoです

  下記のマクロが、最終局面で止まってしまいます。
  マクロは実行中状態です。
    以前は問題なかったんですが、なぜでしょうか?
    教えて下さい。
         カラー強調が巧く行ってないせいでしょうか?
         「検索文字列の強調」オプションのせい?
 WindowsXP  秀丸V6.09

//----------------- FieldGrep.mac
Label:
    $f = "C:\\大正蔵1_55\\Cbeta台湾jis\\最初.txt";
openfile($f);
//      showwindow 3;
if(selecting) $ds = gettext(seltopx, y, selendx, y);
if(!imestate) imeswitch;
$s = input("検索語 ・・・・ app検索。正規表現・曖昧検索OK。\n"
            + "使用履歴 Ctrl+F8  FieldGrep.mac V3.01", $ds);
if(result == 0 ) exit;
if($s == "" ) { message "検索語がありません。"; goto Label;}

////// 初期値設定 ////// "最初.txt"
$mark = ",";//検索除外記号
#number = 0;    //検索除外記号数(台湾版は 0)
#aimai = 1;     //1:する 0:しない
$objectfile = "*.*";// "*.app";
/////////////////////////

$folder = directory;
if(#aimai) $aimai = "する";
else $aimai = "しない";
while(1){
menu "app検索 Go!■push here!",
     "検  索  語: " + $s,
     "区切り記号: " + $mark,
     "検索除外記号数: " + str(#number),
     "あいまい検索: " + $aimai,
     "対象ファイル: " + $objectfile,
     "対象フォルダー: " + $folder;
    #r = result;
    if(#r < 1) endmacro;
    if(#r == 1) break;
    else if(#r == 2){
        if(!imestate) imeswitch;
        $s = input("検索語:");
    }else if(#r == 3) $mark = input("記号:");
    else if(#r == 4){
        if(imestate) imeswitch;
        #number = val(input("記号数:"));
    }else if(#r == 5){
        #aimai = (!#aimai);
        if(#aimai == 0) $aimai = "しない"; else $aimai = "する";
    }else if(#r == 6){
        if(imestate) imeswitch;
        $objectfile =
        input("対象ファイル(複数の場合は ; で区切る)",$objectfile);
    }else if(#r == 7){
    question "一段上に切り替えますか?";
    if(result) call UpFolder;
    }
}
#c = 0;
$unit = "[^" + $mark + "]*";
while(#c < #number){
    $prevset = $prevset + $unit + $mark;
    #c = #c + 1;
}
$prevset = "^" + $prevset + ".*";
$search = $prevset + $s;
//    message "「" + $s + "」のgrep検索を実行します!\n"+
//             "中止はダイアログの[中断]ボタンです。";
    title  "しばらくお待ち下さい!【" + $s + "】を大正蔵検索中です。";
 if(#aimai) grep $search, $objectfile,$folder,regular,fuzzy,subdir,icon, sjis;
        else grep $search, $objectfile, $folder, regular, subdir, icon, sjis;
        #my = result;
  if (!result) { message "見つかりませんでした。";
    title 1;  $prevset = "";  goto Label; }

//----- 検索結果のsort
selectall;
disabledraw;
run "sort < con > con";
//----- 検索結果の語句数
gofiletop;
while( 1 ) {
    searchdown2 $s, regular, fuzzy;
    if( result ) #n = #n + 1;
    else break;
}
//message str(#n);
//-----------------------------------------
gofiletop;
   if(#n > 0 ){
insert " 検索語:【" + $s + "】" + str(#my) + " 行。" + str(#n) + " 個。\n";
insert "  ***** ここからタグジャンプができます *****FieldGrep.mac V3.01 \n";
insert "---------------------------------------------------------\n";
  }
//------
//   config "w110";
call ShowColor;
endmacro;


UpFolder:       //フォルダーを一段上へ
##length = strlen($folder);
##i = 1;
while(1){
    if(midstr($folder, ##length - ##i, 1) == "\\") break;
    ##i = ##i + 1;
}
$folder = leftstr($folder, ##length - ##i);
return;
//***************************************************************************
ShowColor://検索語の強調表示 山紫水明さんのを加入

$word = $s;
#handle_1 = hidemaruhandle(0);
openfile "/h";
#handle_2 = hidemaruhandle(0);
if( searchoption >= 16) $flag = str( val($flag) + 16 );
        //正規表現の場合
if( #aimai ) {
    call Aimai;
    insert $word + "\n";
} else insert $flag + "," + $word + "\n";

saveas hidemarudir + "\\greptemp.hilight";
setactivehidemaru #handle_1;
closehidemaruforced #handle_2;
loadhilight "greptemp.hilight", 0;
config "y+ w110";
//return;
 goto End;

Aimai:
setactivehidemaru #handle_1;
title "〜〜〜 カラー表示の準備中です 〜〜〜";
disabledraw;
#x_a = x; #y_a = y;
$$w[0] = "";
##i = 1;
$$words = "";
$$flag = str( val( $flag ) + 16 );
$$colsearch = $s;
gofileend;
while( 1 ) {
    searchup $$colsearch, regular, fuzzy;
    if( !result )  break;
    ##bx = seltopx;
    ##by = seltopy;
    ##ex = selendx;
    ##ey = selendy;
    moveto ##ex, ##ey;
    moveto ##bx, ##by;
    $$w = gettext( ##bx, ##by, ##ex, ##ey );
    ##k = 0;
    while( ##k <= ##i ) {
        if( $$w == $$w[##k] ) break;//同じものがあれば,比較対照終わり
        ##k = ##k + 1;
    }
    if( ##k > ##i ) {//最後まで同じものがない場合
        $$words = $$words +  $flag + "," + $$w + "\n";
        //if( ##i < 10 ) $cwords = $cwords + $$w + "|";//@
        ##i = ##i + 1;
        $$w[##i] = $$w;
    }
}
moveto #x_a, #y_a;//あいまい風検索開始箇所に戻る
$word = $$words;
title 0;
setactivehidemaru #handle_2;
return;

End:

 closehidemaruforced findhidemaru($f);///
    title 0;
endmacro;
//-----------------end of FieldGrep.mac --------------------------------//



[ ]
RE:00053 Grepが止まるNo.00054
山紫水明 さん 07/04/11 20:47
 
 なむnomotoさん,

>  下記のマクロが、最終局面で止まってしまいます。
>  マクロは実行中状態です。

 検索対象のサンプルと,具体的な検索例を示していただけませんか。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00054 Grepが止まるNo.00055
なむnomoto さん 07/04/11 22:36
 
 山紫水明さん
                      なむnomotoです

> 検索対象のサンプルと,具体的な検索例を示していただけませんか。

 WindowsXP     秀丸V6.50β27
 検索文字列
    中陰經

 結果表示
07涅槃部\0385中陰經.app(1019): T12n0385_p1070a24(00):    中陰經歡喜品第十二
07涅槃部\0385中陰經.app(1036): T12n0385_p1070b12(00):中陰經卷下
07涅槃部\0385中陰經.app(14): T12n0385_p1058c03(00):中陰經卷上

   全部を検索して、結果を表示して全行が反転状態で止まります。
   画面に触ると、秀丸が「マクロ実行を中断しますか?」と尋ねてきます。
    いくら待っても終わらず、 中断しますか?はい   で終了。
   検索文字列のカラー強調はしません。
   中断して 反転状態は消えますが、
   行頭から検索語尾まで、黄色い反転状態になります。=強調状態?
    これは、何かの語句を検索語に取り込むと消え、検索語のみの強調状態にな
ります。
    この症状は、どの検索文字列でも同じです。

    以前は、検索結果が、行頭からの黄色い反転状態で表示されていました。秀
丸の検索文字列の強調をoffにしても同じ。

     秀丸バージョンの低い以前のものにして、テストして見ます。

______

[ ]
RE:00055 Grepが止まるNo.00056
山紫水明 さん 07/04/13 21:59
 
 なむnomotoさん,

>   全部を検索して、結果を表示して全行が反転状態で止まります。
>   画面に触ると、秀丸が「マクロ実行を中断しますか?」と尋ねてきます。
>    いくら待っても終わらず、 中断しますか?はい   で終了。
>   検索文字列のカラー強調はしません。

こちらでは問題ないようですが。何が違うのでしょう。
秀丸エディタ Ver.6.50β28

 検索語:【南無十方三世佛】5 行。5 個。
  ***** ここからタグジャンプができます *****FieldGrep.mac V3.01
---------------------------------------------------------
T18a0852.txt(40): T18n0852ap0108c29(00):  南無十方三世佛    三種常身正法藏
T18b0852.txt(38): T18n0852bp0127b27(00):  南無十方三世佛    三種常身正法藏
T18n0848.txt(3903): T18n0848_p0046b05(00):  南無十方三世佛    三種常身正法

T18n0850.txt(72): T18n0850_p0065c03(00):  南無十方三世佛    三種常身正法藏
T18n0860.txt(41): T18n0860_p0181b05(00):  南無十方三世佛    三種常身正法藏

「南無十方三世佛」が強調されています。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00056 Grepが止まるNo.00057
なむnomoto さん 07/04/15 08:08
 
 山紫水明さん
                  なむnomotoです
 有り難うございます。
 
 当方のWindowsME では、正常です。
            秀丸Ver6.5β28 マクロV3.01

 WindowsXP で最近の秀丸で変です。
 もう少し詳しく調べてみます。
_______

[ ]
RE:00057 Grepが止まるNo.00061
なむnomoto さん 07/04/19 13:02
 
 山紫水明さん
                  なむnomotoです
 WindowsXP での Foledgrep.mac です。

//----- 検索結果のsort
selectall;
//disabledraw;
run "sort < con > con";
//----- 検索結果の語句数

  ここの、disabledraw; をコメントすると、

  title "〜〜〜 カラー表示の準備中です 〜〜〜";

  が出た状態で、止まってしまいます。

  ここの、disabledraw; を生かすと、
  ここで止まるようです。

  title "〜〜〜 カラー表示の準備中です 〜〜〜";

  のルーチンに何か問題が在るでしょうか?
    難しくて私にはサッパリお手上げです。
____

[ ]
RE:00061 Grepが止まるNo.00062
山紫水明 さん 07/04/20 22:14
 
 なむnomotoさん,

>  のルーチンに何か問題が在るでしょうか?

 こちらで再現できないので,何とも調べようがありませんね。
 何らかの設定が影響しているのではないかとは思われますが,わかりません。。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]