◀ANSI版開発トップへ
  • 4197 * No Subject *
    • 4198 Re:アウトライン解析
    • 4199 Re:* No Subject *
      • 4206 Re2: アウトライン解析
        • 4207 Re3: アウトライン解析
          • 4208 Re4: アウトライン解析
            • 4209 Re5: アウトライン解析
            • 4215 Re5: アウトライン解析
              • 4216 Re6: アウトライン解析
  • [4197] * No Subject * すす 2005年12月02日 15:24

    >>data:4894 ですが
    CEditDoc_FuncList1.cppのMakeFuncList_Cにて
    コメント読み込み中もエスケープシーケンスの判定がされるのが原因のようです。
    コメント読み込み中もエスケープシーケンスは常に取り除かなければならないのか

    私では不明のためとりあえず報告のみしておきます。

    げんたさん(authorはげんたさんになってる)、なにかレス返していただけるとありがたいです。
    • [4198] Re:アウトライン解析 すす 2005年12月02日 15:26

      ▼ すすさん
      タイトル忘れました
      タイトル必須にしていただけるとありがたいのですが。。。
    • [4199] Re:* No Subject * すす 2005年12月02日 16:07

      ▼ すすさん
      問題がある気がしてきました。
      エスケープシーケンスを常に取り除いたあとに以降の処理を行う
      で合ってると思うのですが。
      もし合っていれば下の修正で直ります。

      *** D:\tmp\sakura\ssrc_2005-11-27\sakura_org
      \CEditDoc_FuncList1.cpp Fri Dec 2 16:02:21 2005
      --- D:\tmp\sakura\ssrc_2005-11-27\sakura_cor
      e\CEditDoc_FuncList1.cpp Fri Dec 2 15:54:44 2005
      ***************
      *** 377,383 ****
      /* エスケープシーケンスは常に取り除く */
      if( '\\' == pLine[i] ){
      ++i;
      ! }else
      /* シングルクォーテーション文字列読み込み中 */
      if( 20 == nMode ){
      if( '\'' == pLine[i] ){
      --- 377,384 ----
      /* エスケープシーケンスは常に取り除く */
      if( '\\' == pLine[i] ){
      ++i;
      ! }
      ! // }else
      /* シングルクォーテーション文字列読み込み中 */
      if( 20 == nMode ){
      if( '\'' == pLine[i] ){
      • [4206] Re2: アウトライン解析 じゅうじ 2005年12月06日 02:59

        CEditDoc_FuncList1.cpp を、一部残っていますが修正して見ました。

        C_IsLineEsc() が、行単位で末尾の¥を見ないで、後ろから文字単位で見てますね。

        // if( 8 != nMode )
        if( 8 != nMode && 10 != nMode ) /* chg 2005/12/6 じゅうじ */

        if()ブロックコメント
        else if()ラインコメント
        else if()エスケープ
        else if()シングルクオーテーション
        else if()ダブルクオーテーション
        else if()以下変更無し

        エスケープチェックの前にコメントのチェックを持って来ますので、
        >>dev:4199 すす
        の変更は無しで良いかと思います。
        • [4207] Re3: アウトライン解析 じゅうじ 2005年12月07日 01:36

          /Developer/Source/CEditDoc_FuncList1_2005-10-09.diff
          2個アップしましたが、前のでも、良かったです。

          空行の場合、行コメントの継続が終わらなかった修正です。
          • [4208] Re4: アウトライン解析 すす 2005年12月09日 11:41

            ▼ じゅうじさん
            > /Developer/Source/CEditDoc_FuncList1_2005-10-09.diff
            > 2個アップしましたが、前のでも、良かったです。
            >
            > 空行の場合、行コメントの継続が終わらなかった修正です。
            CEditDoc_FuncList1_2005-10-09.diff2 の方で問題ないことを確認しました。

            C_IsLineEsc() のこの辺って2バイト文字の2バイト目でないことのチェックであってます?
            おかしいとか無駄では?とかではなく単純に知的好奇心(そんなもの持ち合わせていたのか?という突っ込みはなしで。)なのですが

            nchar = CMemory::GetSizeOfChar( s, len , len-2 );
            if ( nchar == 1 ) {
            return(true);
            }
            • [4209] Re5: アウトライン解析 じゅうじ 2005年12月09日 13:20

              ▼ すすさん
              >
              > C_IsLineEsc() のこの辺って2バイト文字の2バイト目でないことのチェックであってます?
              > おかしいとか無駄では?とかではなく単純に知的好奇心(そんなもの持ち合わせていたのか?という突っ込みはなしで。)なのですが
              >
              > nchar = CMemory::GetSizeOfChar( s, len , len-2 );
              > if ( nchar == 1 ) {
              > return(true);
              > }

              知的好奇心ですか。今思えば、len >= 1 よりも len > 0 がより良かったかなと…。
            • [4215] Re5: アウトライン解析 じゅうじ 2005年12月13日 23:46

              ▼ すすさん
              > CEditDoc_FuncList1_2005-10-09.diff2 の方で問題ないことを確認しました。

              文字コードの件、ご指摘有難う御座いました。

              申し分けない、すすさんの.diff2に対してではなく、.diffを修正しました。
              /Developer/Source/CEditDoc_FuncList1_2005-10-09.diff2
              削除出来なかったので、こちらが最新です。
              • [4216] Re6: アウトライン解析 げんた 2005年12月14日 23:25

                指名されていたのに,放置していてすみません.
                じゅうじさんも動作確認ありがとうございました.

                私事で恐縮ですが,最近PCが不安定でいきなりリセットがかかることがあり,
                そのときに開いていたファイルが消失することが何度かあったため,現在作業を控えております.
                (実はINCMの過去ログも消えた(´Д⊂ぐすん)
                マザーボードのコンデンサが4本液漏れしているのがどうも原因のようです.

                今週末にはPCをなんとかするつもりですので,その後までお待ちください.