- 作成者投稿
- 2016年1月23日 10:48 am #22332qtv参加者
EmEditorのバージョンを上げたときか、WindowsUpdateをしたときかわからないのですが、今まで動いていたマクロがいくつか実行時エラーが起こるようになりました。
標準のマクロではないのですが、こちらを実行すると「エラーを特定できません」というダイアログが表示されます(L.157の”document.selection.Find()”がある行)。
http://emeditor.web.fc2.com/CtagsSearch.jseeまた、こちらで書いたマクロは「オーバーフローしました」というエラーが出るようになりました(“val = val Xor eeFindReplaceOnlyWord”の行)。
書いた当時は動いていたのですが・・・。
江村様に書いていただいたマクロの方は、正しく動いています。
https://jp.emeditor.com/forums/topic/%E6%A4%9C%E7%B4%A2%E3%81%AE%E3%80%8C%E5%8D%98%E8%AA%9E%E3%81%AE%E3%81%BF%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B%E3%80%8D%E3%82%92%E3%83%88%E3%82%B0%E3%83%AB%E3%81%99%E3%82%8B/#post-22251マクロの変更などで対応できるのであれば、教えていただけないでしょうか。
————–
EmEditor Professional (32-bit)
Version 15.7.2Windows7 SP1 64bit
2016年1月24日 11:25 am #22335Yutaka Emuraキーマスターqtv 様
いつもお世話になっております。江村です。
まず、前者の document.selection.Find() のエラーについてですが、これは、検索文字列が空の場合に発生するのではないかと思います。
if (!document.selection.Find(info, eeFindNext | eeFindReplaceRegExp)) continue;
の行を
if ( info == "" || !document.selection.Find(info, eeFindNext | eeFindReplaceRegExp)) continue;
のように変更してみてください。
後者のオーバーフローについては、おそらく VBScript の数字が 64-bit 整数に対応していないため、非常に大きな数を代入しようとすると、オーバーフローになるからだと思います。これは言語の仕様なので仕方がないと思います。
よろしくお願い申し上げます。
2016年1月24日 11:54 am #22336qtv参加者ご回答、ありがとうございます。
今まではマクロとして動作していたため、EmEditorの仕様が変わったのかもしれないと思い、質問させていただきました。
確認ですが、EmEditorとしてはマクロについて仕様は変更していない、ということでよろしいでしょうか?
↑修正で対応できるため、上記の質問は取り消させていただきます。2016年1月25日 1:44 am #22337Yutaka Emuraキーマスターqtv 様
いつもお世話になっております。江村です。
この度はご迷惑をおかけして申し訳ありません。
次のバージョンからは、Find() で検索文字列が空の場合でも、エラーが発生せずに 0 を返すように、以前の動作に戻します。
よろしくお願い申し上げます。
- 作成者投稿
- このトピックに返信するにはログインしてください。