◀一般トップへ
  • 1708 不具合?マクロ:「ソ」の検索の記録
    • 1742 RE: 不具合?マクロ:「ソ」の検索の記録
      • 1743 Re2: 不具合?マクロ:「ソ」の検索の記録
        • 1744 Re3: 不具合?マクロ:「ソ」の検索の記録
          • 1749 Re4: 不具合?マクロ:「ソ」の検索の記録
            • 1780 Re5: 不具合?マクロ:「ソ」の検索の記録
  • [1708] 不具合?マクロ:「ソ」の検索の記録 jeak 2002年04月20日 19:06

     続けざまの投稿で申し訳ありません。
     「キーマクロの記録開始」を押した後、「ソ」の検索を
    実行しマクロを保存すると

    > S_SearchNext('ソ\', 16); // 次を検索

    のように記録されてしまいます。
    • [1742] RE: 不具合?マクロ:「ソ」の検索の記録 みく 2002年04月22日 19:39


      > 「キーマクロの記録開始」を押した後、「ソ」の検索を
      >実行しマクロを保存すると
      >
      >> S_SearchNext('ソ\', 16); // 次を検索
      >
      >のように記録されてしまいます。

      これは、日本語の2バイト目が0x5cだからですね。
      (CMemory:Replace()で文字列を日本語としてみていないです。)
      • [1743] Re2: 不具合?マクロ:「ソ」の検索の記録 jeak 2002年04月22日 21:06

        > これは、日本語の2バイト目が0x5cだからですね。
        > (CMemory:Replace()で文字列を日本語としてみ
        > ていないです。)

        お返事ありがとうございます。これをヒントに調べてみたところ、
        どうやらサクラエディタ固有の問題ではないようですね。お手数を
        おかけして申し訳ありません。
        • [1744] Re3: 不具合?マクロ:「ソ」の検索の記録 みく 2002年04月22日 21:24

          >タイトル: Re3: 不具合?マクロ:「ソ」の検索の記録
          >発言者: jeak
          >> これは、日本語の2バイト目が0x5cだからですね。
          >> (CMemory:Replace()で文字列を日本語としてみ
          >> ていないです。)
          >
          >お返事ありがとうございます。これをヒントに調べてみたところ、
          >どうやらサクラエディタ固有の問題ではないようですね。お手数を
          >おかけして申し訳ありません。

          開発掲示板に書くほうがよいけども、
          CMemory.cpp:Replace()で、
          }else{
          nBgn++;
          }
          のところがマルチバイト文字を無視しているので、

          }else{
          unsigned char c = (unsigned char)m_pData[nBgn];
          if( (c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc) ) nBgn++;
          nBgn++;
          }

          とでも修正すればよさそう。
          • [1749] Re4: 不具合?マクロ:「ソ」の検索の記録 みく 2002年04月23日 18:54


            この修正でおおむねいいんだけども、
            バイナリファイルを開いてしまって、たまたま日本語の
            1バイト目の次が終端だったらバッファオーバーランし
            てしまうことに気づいた。
            • [1780] Re5: 不具合?マクロ:「ソ」の検索の記録 やざき 2002年04月28日 23:32


              >この修正でおおむねいいんだけども、
              >バイナリファイルを開いてしまって、たまたま日本語の
              >1バイト目の次が終端だったらバッファオーバーランし
              >てしまうことに気づいた。

              ということなので、Replaceを拡張せずに対応しました。