外部プログラムが返す行数を知る方法No.05452
あつし さん 07/02/26 11:10
 
私は、なかなか秀丸マクロだけですらすらと希望の処理ができません。
1行に対しての処理なら、そこそこできるのですが、私の希望するものは、
複数行に渡るものが多いです。

少し複雑になった場合は、

// 選択範囲の記憶(行番号)
#topy=seltoplineno;
#endy=selendlineno;

run $PGM;

// 最初の位置で選択
movetolineno 1,#topy;
beginsel;
movetolineno 1,#endy + 1;
endsel;

のようにして、選択範囲を維持するように作成しています。そのまま
別のマクロを実行したい場合があるからです。
外部プログラムが返す行数が同じ場合は問題ないのですが、行数が
異なる場合、どうすればその行数を知ることができるでしょうか?

マーク系のコマンドでも出来そうですが、他にはないでしょうか?


[ ]
RE:05452 外部プログラムが返す行数を知るNo.05453
白雲斎 さん 07/02/26 14:13
 
こんにちは あつし さん、白雲斎です。

if( !selecting ) endmacro;
#tx = seltopx;
#ty = seltopy;
run getenv("ComSpec") + " /c dir /b *.mac >con";
beginsel;
moveto #tx, #ty;
endmacro;

[ ]
RE:05453 外部プログラムが返す行数を知るNo.05454
あつし さん 07/02/27 11:48
 
白雲斎 殿、有り難う御座います。勉強になりました。

ヘルプを良く読めば分ることでしたね。
私は以下でいこうと思います。
(選択状態は、上から下へにしたい)


// 選択範囲の先頭行
#topline = seltoplineno;

// runコマンド実行

// 現在のカーソル行
#curline = lineno;

// 前の先頭行から現在行までを選択状態へ
movetolineno 1,#topline;
beginsel;
movetolineno 1,#curline;

endmacro;

[ ]