スマートなマクロの書き方No.05201
kaz_yosi さん 06/08/10 00:40
 
マクロ初心者です。
複数のカッコ付き数字を1文字の外字に置き換えるマクロを作りました。
単純な置き換えなのですが、下記のままでは置き換えの繰り返しになってしまい、変
換に時間がかかってしまいます。
もっとスマートに書く方法はあるのでしょうか?

//(1)一文字の(1)に変換
replaceallfast "^(1)" , "¥外字(C222)" , regular , fuzzy ;

//(2)一文字の(2)に変換
replaceallfast "^(2)" , "¥外字(C223)" , regular , fuzzy ;

//(3)一文字の(3)に変換
replaceallfast "^(3)" , "¥外字(C224)" , regular , fuzzy ;
      ↓
      ↓
      ↓
//(78)一文字の(78)に変換
replaceallfast "^(78)" , "¥外字(C26f)" , regular , fuzzy ;

よろしくお願いします。

[ ]
RE:05201 スマートなマクロの書き方No.05202
Iranoan さん 06/08/10 03:11
 
 kaz_yosi さん今日は、Iranoan です。
> 複数のカッコ付き数字を1文字の外字に置き換えるマクロを作りました。
> 単純な置き換えなのですが、下記のままでは置き換えの繰り返しになってしまい、変
> 換に時間がかかってしまいます。
> もっとスマートに書く方法はあるのでしょうか?
>
> //(1)一文字の(1)に変換
> replaceallfast "^(1)" , "¥外字(C222)" , regular , fuzzy ;
 検索と文字列の挿入などを組み合わせればできます。例を末尾に記載してお
きますが、速度が上がるかどうかは解りません。(マクロで要の部分は中央の
段落だけです。)
//--------------------------------------------------------------------
#reg_search = searchmode;
$search = searchbuffer;
#search = searchoption;
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",1;
envchanged;
closereg;

disabledraw;
gofiletop;
setsearch "^([0-9]+)", 0x10;
finddown2;
while( result ){
  tohankaku;
  $s = gettext( seltopx, seltopy, selendx, selendy, 1 );
  insert "¥外字(" + hex( val( midstr( $s, 1, strlen( $s ) - 2 ) )
    + 0xC221 ) + ")";
  finddown2;
}

if( !#reg_search ){
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
  writeregnum "SelectFound",0;
  envchanged;
  closereg;
}
setsearch $search, #search;

[ ]