|
K'zawaです。
(No.05178の修正投稿)
searchdown2 "^#EXTM3U\n",regular,nocasesense;
if(result){ 〜 }
よりも、
replaceallfast "^#extm3u\n","",regular,nocasesense;
if(result){
gofiletop;
insert "#EXTM3U\n";
}
の方が確実でした。
あらかじめ作成しておいたプレイリストを、
秀丸上で合体したときなど、
"#EXTM3U"が複数あった場合用。
------------------------------
disabledraw;
gofiletop;
replaceallfast "^(#.+)\n([^#])","\\1¶\\2",regular;
gofileend;
if(linelen2) insert "\n";
gofiletop;
while(lineno<linecount2){
insert ":";
movetolineno 1,lineno+1;
}
#i=0;
while(#i<3){
call Sort;
#i=#i+1;
}
replaceallfast "^[0-9]+:","",regular;
replaceallfast "¶","\n",regular;
gofiletop;
// if(#header) insert $s+"\n"; この行も削除しましょう。
replaceallfast "^#extm3u\n","",regular,nocasesense;
if(result){
gofiletop;
insert "#EXTM3U\n";
}
enabledraw;
endmacro;
// ここからサブルーチン
Sort:
gofiletop;
while(lineno<linecount2){
insert str(tickcount/lineno%9);
movetolineno 1,lineno+1;
}
selectall;
run "sort.exe <con >con";
return;
------------------------------
こうなります。
>"enabledraw;"と、"endmacro;"
>が、マクロの終わりでない箇所にありますが、
>これでも良いんでしょうか?
"call XXX;"で"XXX"とゆうサブルーチンを呼び出す
の意味になります。(XXXは自分で決める)
サブルーチンは、
XXX:
(コマンド)
return;
のように書きます。(詳しくはマクロヘルプを見てください)
このマクロでは、Sortサブルーチンを3回呼び出しています。
ここで混ざり具合がきまります。
興味があれば、白雲斎さんのオリジナルを3回実行するのと
どう違うのか研究してみてください。
"#i=0;"を明示的に付け加えました。
何も変わらないですが、トラブル防止のため。
前で"#i"を使わなければなくてもいいのですが。
2行目の"gofiletop"は無くてもいいです。
"replaceallfast"の対象は、ファイル全体ですから。
そうゆう意味も含め、
disabledraw;
gofileend;
if(linelen2) insert "\n";
replaceallfast "^(#.+)\n([^#])","\\1¶\\2",regular;
gofiletop;
の順の方がいいかも。
では。
|
|