2008年5月25日日曜日

第95回目 QXマクロの紹介(その6)

○第95回目 QXマクロの紹介(その6)
 ※QXマクロは、QXエディタ(テキストエディタ)で使用されるマクロのことです。
  QXマクロでは、全角スペースはデーター以外は認められていません。コピーして使う場合は、必ず半角スペースに変えてください。

 8.複数の行のある位置に同じ文字列を挿入したい
 この機能もよく使います。
 特にマクロを作っているときに、デバック用に一時的にコマンド群を作ります。そしてチェックが終わるといらないのですが、後で何かの役に立つかということで、コメント分として残しておきます。また、あるマクロを元に新しいマクロを作るときなど、必要かもしれないというコマンド群をコメントとして残しておくことがあります。
 そのようなときに威力を発揮します。筆者は、コメント文にするというマクロと、それを通常のコマンドに直すというマクロを作っています(文頭に"'''"をつける、取るというマクロです)。
 マクロの行下げなどにも使います(タブを行頭に追加する)。
 挿入する文字列は指定できますので、いろいろと使い勝手がいいのです。
 また、文末に挿入することも可能です。この事例もあると便利です。
 しかしながら、途中に挿入する事例はありますが、非常に定式化できずらいと思います。

 流れです。
 0.対象となる行の範囲を指定します
 1.指定した範囲の行番号を取得
 2.挿入したい文字列の入力
 3.挿入する位置の入力
 4.挿入

 1.指定した範囲の行番号を取得
 これは定番の処理です。
  '選択範囲を記憶して、選択解除
  y_begin = @SelectStartLine
  y_end = @ScrLineToCrLine(@SelectEndLine)

 2.挿入したい文字列の入力
 '文字列の入力
msg$ = "挿入したい文字列を入力してください"
rr$ = inputbox$(msg$,"QX32 行頭に文字の挿入","\t") '\tはタブのこと
if rr$ = "" then exit proc

 3.挿入する位置の入力
'文字列の入力
msg$ = "挿入したい場所を入力してください。文字数"
a1 = inputbox(msg$,"QX32 行頭に文字の挿入",0)

 4.挿入
 挿入の対象行の制御はdo loopで行ないます。
  do
  :
   @MoveNextLineCr  '次の行に進める。この行は論理行である。
  loop while @ScrLineToCrLine(@Line) < a1 =" 0" a1 =""> len(a$) then
@MoveEndLine
@InsertF rr$ '制御文字(タブ、改行など)の可能性がありますので、@InsertFを使う。
else
b$=left$(a$,a1+1)
a2=lenb(b$)
@BytePosCr = a2
@InsertF rr$
end if
end if

 今回はここまで

0 件のコメント: