|
はじめましてTORAさん
>最初のカーソル位置を記憶させておいて、
カーソル行をX,Y座標で記憶すればいいとおもいます。
秀丸マクロhelpより
x:カーソルのx座標を表します。カーソルが一番左にいる時が0です。
y:カーソルのy座標を表します。y座標は、現在編集中のテキストの先頭行からワー
プロ的に行番号を計算した値で、一番上にいる時が0です。
>searchupで発見した行にカーソルを移動させ、
>数値を取り込み、
>もとの場所に帰るというやりかたがわかりません。
movetoで移動する。
秀丸マクロhelpより
movetoコマンドは任意の位置にカーソルを移動します。パラメタとしてX座標とY
座標を指定してください。数値でないといけません。
moveto X座標, Y座標
Y座標はファイルの先頭を0として数え,X座標は一番左側の位置を0として数え
た値です。
//---------切り取ってマクロを使ってください---
//ラベル数の文字数
#labnum = 5;
$labchr = ":" ;
#upcnt = 100;
//現在のカーソル位置を記憶
#x = x ; #y = y;
//上方向検索
//正規化表現(先頭にある":" + 数字5文字 を検索)
$find = "^" + $labchr + "[0-9][0-9][0-9][0-9][0-9]";
searchup $find,regular;
//もし検索文字列がみつからなかったら
if(!result){
message $find + "が見つかりません";
goto LEND;
}
//文字列取り込み
$num = gettext( 1, y,1+ #labnum ,y ) ;
//$num = gettext( x1, y1, x2, y2 ) ;
//x1,y1からx2,y2の範囲にある文字列を返します。
//元のカーソル行の先頭位置に戻る
moveto 0 , #y;
//サブルーチン 引数$numをサブルーチンに引き渡す
call NUMGEN $num ;
//返り値を $retに戻す
$num = $$return ;
insert $labchr + $num;;
LEND:
endmacro;
NUMGEN:
$$num = $$1;
##num = val($$num) + #upcnt;
//値によって桁数あわせをする。
if(##num < 10){
$$num = "0000" + str(##num) ;
}
else if(##num < 100){
$$num = "000" + str(##num) ;
}
else if(##num < 1000){
$$num = "00" + str(##num) ;
}
else if(##num < 10000){
$$num = "0" + str(##num) ;
}
else
$$num = str(##num) ;
return $$num;
//---------切り取ってマクロを使ってください(終わり)---
>もしくは、もっと簡単なやりかたをご存知の方、
>どうぞお教えください。
実行したい内容がわかりにくいので私なりに解釈しました。(あっていればいいので
すが)
すべての行にラベルを入力する。
初期値を入力する。
初期値+100を終了行まで入力する。
//---------切り取ってマクロを使ってください---
//ラベル数の文字数
#labnum = 5;
$labchr = ":" ;
#upcnt = 100;
$intnum = "初期値行番号:" ;
$step = "ステップ:" ;
#intnum = val(input($ininum,"100"));
if(#intnum == 0 ){
message "入力値がおかしいです!!";
goto LEND;
}
#step = val(input($step,str(#upcnt)));
if(#step == 0 ){
message "入力値がおかしいです!!";
goto LEND;
}
while( (#code != eof) & (#code1 != eof)){
call NUMGEN $num ;
//返り値を $retに戻す
$num = $$return ;
insert $labchr + $num +" ";
golineend2 ; //行の最後に移動
#code = code; //現在のカーソル位置にある文字CODEを取得
moveto 0,y+1; //次の行に移動
#code1 = code; //現在のカーソル位置にある文字CODEを取得
//サブルーチン 引数$numをサブルーチンに引き渡す
}
LEND:
endmacro;
NUMGEN:
$$num = $$1;
##num = val($$num) + #upcnt;
//値によって桁数あわせをする。
if(##num < 10){
$$num = "0000" + str(##num) ;
}
else if(##num < 100){
$$num = "000" + str(##num) ;
}
else if(##num < 1000){
$$num = "00" + str(##num) ;
}
else if(##num < 10000){
$$num = "0" + str(##num) ;
}
else
$$num = str(##num) ;
return $$num;
//---------切り取ってマクロを使ってください(終わり)---
>
>それと、現在も手に入る秀丸の参考書をご存知でしたら
>お教えいただけませんか?
JRくんのHPにある秀丸Q&Aを参考にされるといいとおもいます。
http://win.blue.co.jp/~jr-kun/hidemaru_qa/index.html
p.s.
今日で仕事納めなので、わからないことがあって質問されても来年の回答になるかも
しれません。
|
|