|
こんにちわ、rosegardenykです.
次のサブルーチンを本体マクロに付け加えこのサブルーチンをcallするステートメン
トを書き加える前にテスト実行したところ「秀丸内部エラー」で実行直後に落ちまし
た。このサブルーチンをcallしてもいないのに落ちたのです。単に削除して実行する
と正常に動作します。サブルーチンを書き加えただけで落ちるなんてことがあるので
しょうか?
【状況説明】
エラー発生後Ctrl+Alt+Delでタスクマネージャーを呼びだし秀丸を終了させることは
できたのですが、タスクマネージャー枠がプルプルとふるえていました。タスクマ
ネージャーも終了できるのですが、今度はデスクトップの秀丸ショートカットアイコ
ンがプルプルとふるえていました。このアイコンをWクリックすると、ハングアップ
起動ボタンのある画面が表示され、またまたプルプルとふるえていました。困ったの
は、OKボタンを押しても、ハングアップ起動ボタンを押しても、まったく先に進みま
せん。よく見るとOKボタンが繰り返し勝手に押されています。PCを通常のシャットダ
ウンさせることもできず、やりたくはなかったのですがPCスイッチの長押しで強制終
了させました。
再度PC立ち上げ後、そのままこのマクロ実行したところ、やはり「秀丸内部エラー」
(HmJre.dllエラーという表示ではない)で落ちます。サブルーチンをcallしていない
ことを確認して、PC再立ち上げ後、サブルーチンを削除して実行し、元通り正常に動
作することを確認しました。
今回のエラーは私にとって、今ままでで、いちばんこわいエラーでした。私のPCが古
く前に強制終了したところ、PCが起動しなくなったことがありました。長く使ってい
たのでもうこれでお釈迦かとも思いましたが、苦慮の末、PCの底を平手でバンバンと
強く叩いたところ、見事に復活しました。それ以来PC開始ボタン長押しの強制終了は
極力避けていました。 今回は2回も強制終了してしまいました。
原因究明と対応策をよろしくお願いします。
////$$1 $RegiJ /////////////////////////////////////////////////////////////
/////////////////////////////////////
FindBaseTerm2:
loaddll "hmjre.dll";
##i = 0; ##n = 0;
while (#Bra > ##i) {
##i = ##i + 1;
##d = dllfunc( "FindRegular", $$SaveRegiJ[##i], $$1, 0);
if (##d >= 0) {
##n = ##n + 1;
$$HitWord[##n] = $$SaveRegiJ[##i];
}//if (##d >= 0)
}//while
##i = 0;
while (##n > ##i) {
##i = ##i + 1;
##j = 0;
while (##n > ##j) {
##j = ##j + 1;
if (##i == ##j) continue;
##d = dllfunc( "FindRegular", $$HitWord[##i], $$HitWord[##j], 0);
if (##d >= 0) ##HitWord[##i] = 1;
}//while j
}//while i
##i = 0;
while (##n > ##i) {
##i = ##i + 1;
if (##HitWord[##i] == 1) continue;
$$1 = dllfuncstr("ReplaceRegular", "(" + $$HitWord + ")", $$1, 0, "「\\1」",
1);
}//while
##i = 0;
while (##n > ##i) {
##i = ##i + 1;
if (!##HitWord[##i]) continue;
##d = dllfunc("FindRegular", "(?<!「[^「」]*?)" + $$HitWord + "(?![^「」]*?」)",
$$1, 0,);
if (##d >= 0)
$$1 = dllfuncstr("ReplaceRegular", "(?<!「[^「」]*?)(" + $$HitWord + ")(?![^
「」]*?」)", "「\\1」", 1);
}//while
return $$1;
|
|