4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • 投稿者
    投稿
  • #22332

    qtv
    Participant

    EmEditorのバージョンを上げたときか、WindowsUpdateをしたときかわからないのですが、今まで動いていたマクロがいくつか実行時エラーが起こるようになりました。

    標準のマクロではないのですが、こちらを実行すると「エラーを特定できません」というダイアログが表示されます(L.157の”document.selection.Find()”がある行)。
    http://emeditor.web.fc2.com/CtagsSearch.jsee

    また、こちらで書いたマクロは「オーバーフローしました」というエラーが出るようになりました(“val = val Xor eeFindReplaceOnlyWord”の行)。
    書いた当時は動いていたのですが・・・。
    江村様に書いていただいたマクロの方は、正しく動いています。

    マクロの変更などで対応できるのであれば、教えていただけないでしょうか。

    ————–
    EmEditor Professional (32-bit)
    Version 15.7.2

    Windows7 SP1 64bit

    #22335

    Yutaka Emura
    Keymaster

    qtv 様

    いつもお世話になっております。江村です。

    まず、前者の document.selection.Find() のエラーについてですが、これは、検索文字列が空の場合に発生するのではないかと思います。

    if (!document.selection.Find(info, eeFindNext | eeFindReplaceRegExp)) continue;
    

    の行を

    if ( info == "" || !document.selection.Find(info, eeFindNext | eeFindReplaceRegExp)) continue;
    

    のように変更してみてください。

    後者のオーバーフローについては、おそらく VBScript の数字が 64-bit 整数に対応していないため、非常に大きな数を代入しようとすると、オーバーフローになるからだと思います。これは言語の仕様なので仕方がないと思います。

    よろしくお願い申し上げます。

    #22336

    qtv
    Participant

    ご回答、ありがとうございます。
    今まではマクロとして動作していたため、EmEditorの仕様が変わったのかもしれないと思い、質問させていただきました。
    確認ですが、EmEditorとしてはマクロについて仕様は変更していない、ということでよろしいでしょうか?
    ↑修正で対応できるため、上記の質問は取り消させていただきます。

    #22337

    Yutaka Emura
    Keymaster

    qtv 様

    いつもお世話になっております。江村です。

    この度はご迷惑をおかけして申し訳ありません。

    次のバージョンからは、Find() で検索文字列が空の場合でも、エラーが発生せずに 0 を返すように、以前の動作に戻します。

    よろしくお願い申し上げます。

4件の投稿を表示中 - 1 - 4件目 (全4件中)

このトピックに返信するにはログインが必要です。

友達に知らせる... Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone