|
こんにちは。
>みたいなイメージです。とにかく改行コードを秀丸上で同じカラムに並ばせたいので
>す。
・ファイル全体を処理する
・あらかじめ決められた桁数に合わせる(下の例では半角30文字)
・長さの調整は半角の空白で行う
・ファイル末尾の[EOF]が行の先頭にあったら、その行は処理しない
・タブ文字は半角1文字扱い(秀丸上では処理後の改行位置がずれて見える)
という想定で基本的な処理の部分だけ書いてみました。
(このままで動くはずです。)
//----ここから
##l = 30; //※1
gofiletop;
while(1){
golineend2;
while(linelen2 < ##l)insert " ";
if(code == eof)endmacro;
movetolineno 1, lineno+1;
if(code == eof)endmacro; //※2
}
//----ここまで
冒頭の5つの想定に対してコメントをつけておきます。
・ファイル全体を処理する
→例えば選択範囲だけ処理するとか、○行目以降のみ処理するなどといった場合
はそれなりの仕組みが必要になります。
・あらかじめ決められた桁数に合わせる
→上のマクロでは、桁数をマクロの中で指定しています(※1の行)
→上のマクロでは、指定した桁数より長い行は処理しないようにしています
→桁数の指定方法の選択肢としては、上のようにマクロのほかに
・都度手入力で指定する
・処理対象のテキストの中で一番長い行に合わせる
といったことが考えられます。
・長さの調整は半角の空白で行う
→他の文字で調整することも全く同様にできますが、意味はないでしょう。
・ファイル末尾の[EOF]が行の先頭にあったら、その行は処理しない
→ファイル末尾の[EOF]が行の先頭にあったら、その行も処理する場合は※2の
行を削除すればよいです。
・タブ文字は半角1文字扱い(秀丸上では処理後の改行位置がずれて見える)
→そもそもデータにタブ文字が含まれることがないのなら考慮不要
→タブを(見かけ上)何文字扱いにするかはソフトウェア依存なので、上記の扱
いとしていますが、例えば「半角○文字扱いにする」という場合には多少ややこ
しい処理が必要です。
また、処理を高速化するには、disabledrawなどを使うとよいでしょう。
|
|