|
// reSyncro.mac 比較点の再同期
// 前後にずらし、最初に11連一致のあった位置に移動する
// 複数行は処理できない、1行内のずらしのみ。
// やはりアルゴリズム通りにやらないとダメかも。遅い5秒かかる
// 編集面は文字単位の操作で、マクロの文字列はバイト単位、
// の違いはやりにくい。
// 2画面操作
///if(-1==findhidemaru("w.txt")){menu "W.txt";endmacro;}
///#hwndw=hidemaruhandle(findhidemaru("w.txt"));
#hwnd0=hidemaruhandle(0);
#hwnd1=hidemaruhandle(1);
// 2文字列取り出し
#x0=x;#y0=y;// 戻り位置
right 99;$str0=gettext(#x0 ,#y0,x,y);
setactivehidemaru #hwnd1;
#x1=x;#y1=y;// 戻り位置
right 99;$str1=gettext(#x1 ,#y1,x,y);
// 比較バイト数 文字単位の操作は編集面のみ可能
#strlen0=strlen($str0);
#strlen1=strlen($str1);
if(#strlen0 > #strlen1)#cmplen=#strlen1;#cmplen=#strlen0;
// 比較二重ループ
///setactivehidemaru(#hwndw);selectall;delete;
///insert $str0+"\x0D\x0A";
///insert $str1+"\x0D\x0A";
#cmplen2=#cmplen;#b=0;while(#cmplen2>0){
#r5=0;
#i=0;while(#cmplen2>#i){
if(midstr($str0,#i,3)==midstr($str1,#b+#i,3))
{///insert "M";
#r5=#r5+1;}else{ /// insert ".";
}
if(11<=#r5){ #b01=1;goto movephase;}
#i=#i+1;}
///insertreturn;
#r5=0;
#i=0;while(#cmplen2>#i){
if(midstr($str0,#b+#i,3)==midstr($str1,#i,3))
{//insert "M";
#r5=#r5+1;}else{ ///insert ".";
}
if(11<=#r5){ #b01=0;goto movephase;}
#i=#i+1;}
///insertreturn;
#cmplen2=#cmplen2-1;#b=#b+1;}
movephase:
#i=#i-10;
///menu str(#b01),str(#b),str(#i);
if(0==#b01){
///menu "0";
setactivehidemaru #hwnd0;moveto #x0+#b+#i,#y0;
setactivehidemaru #hwnd1;moveto #x1+#i,#y1;
}else{
///menu "1";
setactivehidemaru #hwnd0;moveto #x0+#i,#y0;
setactivehidemaru #hwnd1;moveto #x1+#b+#i,#y1;
}
//
endmacro;
|
|