「変換リストによる連続置換」マクロの置No.00361
gohan さん 16/04/27 15:22
 


山紫水明さん、初めまして。

「変換リストによる連続置換」マクロを使わせていただいております。

タイトルの通り、「変換リストによる連続置換」マクロの置換語の文字列上限を拡大
することはできるでしょうか?

具体的に言いますと、

「@abc, Atext, r」

上記のリスト形式の「Atext」の部分で文字列の量を増大させると、置換時に途中で
途切れた状態で置換されてしまい、置換語全てを置換することができません。


マクロを書き換えることで、できるようになるのでしょうか?

それとも、64bitの秀丸マクロを使用することで解決できるのでしょうか?

どうか、ご教授の程お願いいたします。

[ ]
RE:00361 「変換リストによる連続置換」マNo.00362
山紫水明 さん 16/04/29 22:39
 
 gohanさん,

>上記のリスト形式の「Atext」の部分で文字列の量を増大させると、置換時に
>途中で途切れた状態で置換されてしまい、置換語全てを置換することができま
>せん。

 このマクロではリストの各行を文字列変数に格納していますが,文字列変数に
は文字数の上限があるようです。どのくらいの長さの置換語を使用されているか
わかりませんが,一定の長さ以上になると,制限を超えた部分は切れてしまうと
思います。これをマクロで解決するのは無理な気がします。

                    山紫水明

[ ]
RE:00362 「変換リストによる連続置換」マNo.00363
gohan さん 16/05/10 18:21
 

返信ありがとうございます。

> このマクロではリストの各行を文字列変数に格納していますが,文字列変数に
>は文字数の上限があるようです。どのくらいの長さの置換語を使用されているか
>わかりませんが,一定の長さ以上になると,制限を超えた部分は切れてしまうと
>思います。これをマクロで解決するのは無理な気がします。


何とか使用方法を工夫して解決することができました。


[表示]-[折り返し]-[最大]で行を最大まで表示させた後、二行以上になっている置換
語を手作業で改行します。
 (二行目の中間あたりが文字数制限になっているため、二行目の先頭部分で改行し
ます。)

その後自分で作成した簡単なマクロで改行した一行目の置換語の最後尾に独自の識別
子を置換して、改行した二行目にその独自の識別子を検索語として検索できるように
しました。

これにより、置換リストを実行した後、自然とつながった状態で置換されるようにな
ります。


素晴らしいマクロなので、同じような問題にあった人のために書いてみました。

助けになれば幸いです。


[ ]
RE:00362 「変換リストによる連続置換」マNo.00364
colder さん 16/05/10 20:55
 
横から失礼します。ユーザーのcolderです。

> このマクロではリストの各行を文字列変数に格納していますが,文字列変数に
>は文字数の上限があるようです。どのくらいの長さの置換語を使用されているか
>わかりませんが,一定の長さ以上になると,制限を超えた部分は切れてしまうと
>思います。これをマクロで解決するのは無理な気がします。

文字列変数の上限ではなく、検索/置換に利用できる文字列長の上限のようです。
で、この上限を突破する方法が何とか見つかりました。
そのマクロを先ほどライブラリに登録しました。明日にでも公開されるでしょう。
gohanさんのほうも使用方法の工夫で解決されたみたいですので、需要があまりある
とも思えませんが、一応、他のマクロから利用する方法も用意してあります。

[ ]
RE:00364 「変換リストによる連続置換」マNo.00365
山紫水明 さん 16/05/12 21:24
 
 colderさん,

>文字列変数の上限ではなく、検索/置換に利用できる文字列長の上限のようです。
>で、この上限を突破する方法が何とか見つかりました。

説明文書の
execmacro "検索文字列","置換文字列",その他のオプション("regular",
"nocasesense","word"を任意の順);

execmacro "longreplace.mac", "検索文字列","置換文字列"・・・ですよね。
それでオプションなしで実行してみたら,全角文字で2,044文字まではOKです
が,それを超えるとエラーが出ました。
秀丸エディタ Ver.8.56(32ビット版)です。もしかしたら32ビット版だからでし
ょうか。
                    山紫水明

[ ]
RE:00365 「変換リストによる連続置換」マNo.00366
colder さん 16/05/12 22:09
 
>説明文書の
>execmacro "検索文字列","置換文字列",その他のオプション("regular",
>"nocasesense","word"を任意の順);
>は
>execmacro "longreplace.mac", "検索文字列","置換文字列"・・・ですよね。
>それでオプションなしで実行してみたら,全角文字で2,044文字まではOKです
>が,それを超えるとエラーが出ました。
>秀丸エディタ Ver.8.56(32ビット版)です。もしかしたら32ビット版だからでし
>ょうか。
山紫水明さん、こんにちは。
もしかして、置換文字列を""で囲って直接呼び出しています?
マクロで""で囲って書ける文字列には長さ制限あるみたいです。
ちょっと面倒ですが、いったん複数の文字列変数に入れて、
$a = "検索文字列";
$temp1 = "置換文字列1";
$temp2 = "置換文字列2";
$b = $temp1+$temp2;
execmacro $a,$b・・・などとする必要があるみたいです。

[ ]
RE:00366 「変換リストによる連続置換」マNo.00367
山紫水明 さん 16/05/13 21:18
 
 colderさん,

もしかして、置換文字列を""で囲って直接呼び出しています?
ご推察のとおりです。

>$a = "検索文字列";
>$temp1 = "置換文字列1";
>$temp2 = "置換文字列2";
>$b = $temp1+$temp2;
このようにしたらうまくいきました。

 改めてコードを拝見しましたが,HmJre の置換関数を使用されていますね。こ
ちらの方は文字列変数に入れれば,文字数の制限がなくなることを今まで気づい
ていませんでした。

 ところで,対象の文書の最後の行に改行がないときは,この行が置換の対象に
ならないようですので,この場合の処理が必要なようです。

                    山紫水明

[ ]
RE:00367 「変換リストによる連続置換」マNo.00368
colder さん 16/05/13 22:05
 
> ところで,対象の文書の最後の行に改行がないときは,この行が置換の対象に
>ならないようですので,この場合の処理が必要なようです。

ご指摘ありがとうございます。
最後の行に改行がないときも一応考えていたんですが、公開前に少しマクロがいじっ
たので置換されなくなっていました。
マクロの説明にも間違いがあったので、この修正もして再公開します。

[ ]