|
TAKA です。
>下のようなマクロを作って実行すると、
>whileに続くreplaceallが実行されなくて、
>画面でクリックすると、「マクロを中断しますか」
>というメッセージが表示されます。
>いろいろ試したのですが解決方法がわかりません。
>ご教示いただければ幸いです。
>
>gofiletop; disableinvert;
> while( code != eof){
>searchdown "★";
>golinetop;
>beginsel;
>golineend;
>delete;
> }
「while( code != eof)」の意味は、カーソルがある位置が[EOF]で
ない間、ループするという意味です。
searchdownで見つからなかった場合は、カーソルが移動しませんの
で、カーソルが[EOF]の位置に来ませんし、
検索されて「delete」してもカーソルの位置はその行の改行の位置
なのでカーソルが[EOF]の位置に来ません。
マクロを中断して、カーソルの位置を確認してみて下さい。
原因は、そういうことですが、
「★」が含まれる行を削除するということでしたら、正規表現とい
う機能を利用して、
replaceall ".*★.*", "", regular;
で実現出来ます。
改行自体も消したい場合は、
replaceall ".*★.*\\n", "", regular;
です。
searchdownを使用したい場合は、
searchdown "★";
while( result )
{
golinetop;
beginsel;
golineend;
delete;
finddown;
}
で、可能です。
「while( result )」で、「searchdown」もしくは、「finddown」
が成功する間はループするという意味です。
|
|