RE:範囲指定つき一括置換についてNo.01087
ひろ さん 00/02/28 16:10
 
 皆さん今日は、ひろです。
 MES/2/05127 へのレスです。以下に sample macro を記載します。
#reg_search=searchmode;
if(!#reg_search){
  writeininum "hidemaru.ini","Env","SelectFound",1;
  envchanged;
}
if(selecting){
  #bx=seltopx;
  #by=seltopy;
  #ex=selendx;
  #ey=selendy;
}else{
  message "範囲選択しないと実行できません。";
  endmacro;
}$search=input("検索文字列は?");
$replace=input("置換文字列は?");
escape;
moveto #ex,#ey;
searchup $search;
while(result){
  if(seltopy<#by||(seltopy==#by&&selendx>#bx))break;
  else insert $replace;
  findup;
}escape;
writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
envchanged;
endmacro;

[ ]
RE:01087 RE:範囲指定つき一括置換についNo.01110
乱土 労馬 さん 00/03/02 13:13
 

 ひろさんどうもありがとうございました。乱土です。

 さっそくこのマクロを実行してみたのですが、見かけ上数行にわたる一行の
文の途中を範囲指定してやってみると、どうも行頭から範囲指定した部分の
最後までが置換の対象になるようでした。なにか使い方間違ったかな(^^;)。

 同様にMES2/5175で番頭++さんにもサンプルマクロをいただいたのですが、
こちらはうまく指定した範囲内を置換してくれました。ただ、このマクロを
利用して、ファイルに散らばっているダブルクオートを片っ端から探し出して
変換する、というのを考えてて挫折しました(笑)。

 なんですけど、「別に置換にこだわらなくてもいいじゃん」って気がついて、
ためしに一文字ずつコードを見てダブルクオートだったら&quot;に変換する
というマクロを組んでみたら、あっさり解決してしまいました。

 スマートさのかけらもないマクロですが(笑)、100kぐらいのサイズまで
ならなんとか実用に耐えるかな、って感じで(^^;)。

 ともあれひろさん、番頭++さん、いろいろありがとうございましたm(__)m。

[ ]
RE:01110 RE:範囲指定つき一括置換についNo.01134
ひろ さん 00/03/04 08:39
 
 乱土 労馬さん今日は、ひろです。
>  さっそくこのマクロを実行してみたのですが、見かけ上数行にわたる一行の
> 文の途中を範囲指定してやってみると、どうも行頭から範囲指定した部分の
> 最後までが置換の対象になるようでした。なにか使い方間違ったかな(^^;)。
 思いっ切り bug がありましたm(_|_)m。下記のものは bug fix されています。
if(!selecting){
  message "範囲選択しないと実行できません。";
  endmacro;
}
#bx=seltopx;
#by=seltopy;
#ex=selendx;
#ey=selendy;
#reg_search=searchmode;
if(!#reg_search){
  writeininum "hidemaru.ini","Env","SelectFound",1;
  envchanged;
}
$search=input("検索文字列は?");
$replace=input("置換文字列は?");
escape;
moveto #ex,#ey;
searchup $search;
while(result){
  if(seltopy<#by||(seltopy==#by&&seltopx<#bx))break;
  else insert $replace;
  findup;
}
escape;
writeininum "hidemaru.ini","Env","SelectFound",#reg_search;
envchanged;
endmacro;

[ ]