1 件の投稿を表示中 (合計 4 個)
  • 作成者
    投稿
  • #22332
    qtv
    参加者

    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.2

    Windows7 SP1 64bit

    #22335
    Yutaka 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 整数に対応していないため、非常に大きな数を代入しようとすると、オーバーフローになるからだと思います。これは言語の仕様なので仕方がないと思います。

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

    #22336
    qtv
    参加者

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

    #22337
    Yutaka Emura
    キーマスター

    qtv 様

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

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

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

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

1 件の投稿を表示中 (合計 4 個)
  • このトピックに返信するにはログインしてください。