var num,step,digit:Integer; // 行番号を取り扱う整数数値変数 n:Integer; // 作業用の整数数値変数 word:String; // 作業用の文字列変数 begin num := 100; // 先頭行の行番号を指定せよ step := 100; // 行番号の増分値を指定せよ digit:= 6; // 行番号の表示桁数を指定せよ
S_GoFileTop(0); // ファイルの先頭に移動
while (True) do // 無限ループだじょ begin S_SelectWord(0); // 現在位置の単語選択 word := S_GetSelectedString(0); // 選択文字列を取得する // MessageBox(word,'debug',0); // for Debug
if word = '' then // 文字列が空なので、ファイル末尾に達した(と思われる) begin S_GoFileTop(0); // ファイルの先頭に移動 exit; // マクロ終了!! end;
word := IntToStr(num); // 行番号を文字列に変換する。
// ↓行番号文字列の前に、桁の不足分 '0' を追加する。 for n := Length(word) to (digit - 1) do word := '0' + word;
S_InsText( word ); // 行番号文字列をエディタに出力する。
num := num + step; // 行番号 += setp S_GoLineTop(1); // 行頭に移動(行頭のスペースを無視する) S_Down(0); // カーソル下移動 end;
000800 IF A = B AND B = C THEN 000900 MOVE A TO D と編集してマクロを実行しますと、
000800 IF A = B AND 000900B = C THEN 001000 MOVE A TO D こういった結果になってしまいます。 追加した行の頭から全てのスペースを行番に変えずに 6文字分のみを範囲選択して貼り付けるなんて事は無理なのでしょうか。 お願いばかりで申し訳ありませんが宜しくお願いしますm(__)m
>たとえば > >000800 IF A = B THEN >000900 MOVE A TO D >なんてのを > >000800 IF A = B AND > B = C THEN >000900 MOVE A TO D >と編集してマクロを実行しますと、
提案その1 タイプ別設定 - スクリーン タブにて、「その他のインデント対象文字」に対して 半角数字文字「0123456789」を追加してみては? これで「IF A = B THEN」の行で普通に改行すると 000800 IF A = B THEN 000800 000900 MOVE A TO D になりますよ。楽じゃあない?