処理行数に限界がありますかNo.37195
柳絮 さん 19/03/06 03:59
 
いつもお世話になります。

英語の熟語や単語を日本語に置換するための辞書を作って使用しています。辞書は各
行が1つの英語表現を検索して日本語表現に置換するようになっています。また検索
の前後には前方不一致と後方不一致の条件を付けています。具体的には

replaceall "(?<![【<■●a-z])accidents?(?![a-z■●】>]{1,})", "事故" , regul
ar, nocasesense, inselect, nohilight;

のようなものが並んでいます。



ところが3000行を超えた当たりからエラー表示が出るようになり、マクロが止まるよ
うになりました。エラーメッセージはXXXXXX.mac(3115)のようなものでXXXXXXのとこ
ろは文字化けしていて読めませんが、数字はエラー行のようです。

そのエラーが初めて出てきたときには、使わない単語の行を1つ削除してエラーを解
消しましたが、その後新しい単語を登録すると必ず同じエラーが出てくるようになり
ました。

現在は辞書を小さく分割して対処していますが、そもそも秀丸には処理行数または処
理文字数の限界があるのでしょうか。或いはこちらのマクロの記述のし方などに問題
があり、その記述なり何かの設定を変えることで問題を解決できるのでしょうか。

なお問題の辞書ファイルは3,102行、323,540文字と下に出ています。

ご教示いただければ幸いです。

柳絮



[ ]
RE:37195 処理行数に限界がありますかNo.37197
秀丸担当 さん 19/03/06 09:00
 

1つのマクロの処理行数(正確には内部的な情報に変換されたサイズ)には上限があ
ります。
昔は64KBでしたが、バージョンを追うごとに増やしていて今は256KBになっていて、
だいたい言われているようなファイルサイズが上限になってしまいます。
execmacroを使ってマクロからマクロを呼び出すことで、回避する方法があります。
例えば以下のような感じで、2つのマクロを連続して呼ぶので、こうすると扱えるサ
イズは倍になります。
execmacro "test1.mac";
execmacro "test2.mac";

置換するリストが多い場合、山紫水明さん作の変換リストによる連続置換のマクロを
使われる方も多いようです。
https://hide.maruo.co.jp/lib/macro/listreplace307.html

[ ]
RE:37197 処理行数に限界がありますかNo.37198
柳絮 さん 19/03/06 15:36
 
秀丸担当様

ご回答有難う御座いました。現在は前にこちらでお教えいただいたマクロを使い9つ
の辞書を順番に適用していますが、そのうちの基本となる辞書が大きくなりすぎて不
具合が出てきて、お尋ねしたのです。やはり上限があるのですね。

ご紹介いただいた山紫水明さんのものを勉強して見ます。

お時間をいただいたことに感謝します。

柳絮

[ ]