6 返信 最新の回答 日時: Dec 17, 2004 12:29 PM ユーザー:(ymgc)

    コンディショナンタグが適用されているテキストが知りたい

    Level 1
      突然ですが、質問があります。

      ある文書内で、適用されているコンディションタグを全て知りたいのです。
      定義されているものではなく、使われているもので、適用されているテキストも知りたいです。

      どなたかお力をお貸しください。
      お願いします。
        • 1. Re: コンディショナンタグが適用されているテキストが知りたい
          Level 1
          rocket21様。

          使用されているコンディションタグ、であれば、
          索引作成でコンディションタグを選択して実行すれば一覧ができます。
          (ページ番号は邪魔かもしれませんが…)
          目次作成でも同じですが、同じコンディションタグでも適用されている文字列分リストされちゃうので、索引の方が良いでしょう。

          適用されているテキストも、って事になると。
          FDK使って、文字列取得(FTI_StringとFTI_CharPropsChange)して、
          どこかに情報を書き出していけば良いかなと思います。

          他には…。
          MIFで保存して、"InCondition"をgrepして、
          その後ろにある文字列、というふうに探していくか?

          あまり参考にならないですね...。
          • 2. Re: コンディショナンタグが適用されているテキストが知りたい
            Level 1
            さっそくの回答、ありがとうございました。<br /><br />>>FDK使って、文字列取得(FTI_StringとFTI_CharPropsChange)して、<br /><br />>>どこかに情報を書き出していけば良いかなと思います。<br /><br />について知りたいです。具体的にどういった手順を踏めばよろしいでしょうか?<br /><br />F_TextItemsT txtitms<br /><br />txtitms = F_ApiGetText(doc, pgf, FTI_String|FTI_CharPropsChange);<br />for(i=0;i<txtitms.len;i++)<br />{<br />    if(txtitms.val[i].u.idata & FTF_CONDITIONTAG)<br />    {<br />        ここがコンディションタグのテキスト<br />        txtitms.val[i].u.sdata<br />    }<br />}<br /><br />こういった感じですかね?
            • 3. Re: コンディショナンタグが適用されているテキストが知りたい
              Level 1
              rocket21様。<br /><br />実際にデバッグしてデータを確認したわけじゃないので…やってみなきゃ分かりませんが。<br /><br />コンディションタグが適用されている文字列のMIFを確認すると、<br />  <Conditional <br />   <InCondition `コメント'><br />   > # end of Conditional<br />  <String `テキスト'><br />  <Unconditional><br />となっているので、<br />FTI_CharPropsChangeが<Conditional>と<Unconditional>で発生し、<br />その間のFTI_Stringが適用されている文字列、って感じにGetTextできるのかなと思います。<br /><br />GetTextの結果の予測として、<br /> FTI_CharPropsChange ← idataにFTF_CONDITIONTAG、sdataに"コメント"<br /> FTI_String ← "テキスト"<br /> FTI_CharPropsChange ← idata、sdata共に空?<br />または、<br /> FTI_CharPropsChange ← idataにFTF_CONDITIONTAG、sdataが空?<br /><br />という感じでしょうか?
              • 4. Re: コンディショナンタグが適用されているテキストが知りたい
                Level 1
                自己レス、です。

                 FTI_CharPropsChange ← idataにFTF_CONDITIONTAG、sdataに"コメント"
                 FTI_String ← "テキスト"
                 FTI_CharPropsChange ← idata、sdata共に空?

                ↑unionで切ってるんだから…こんな訳ないんですよ(汗)。

                で、
                 FTI_CharPropsChange ← idataにFTF_CONDITIONTAG
                 FTI_CharPropsChange ← sdataに"コメント"?
                 FTI_String ← "テキスト"
                 FTI_CharPropsChange ← idata空?

                かと思ってデバッグしてみました。

                なんか、結果が違います。
                 がなくて、
                 FTI_CharPropsChange ← idataにFTF_CONDITIONTAG
                なんです。

                コンディションタグ名、どうやって引っ張ってこれるんだろう?
                • 5. Re: コンディショナンタグが適用されているテキストが知りたい
                  Level 1
                  出来ました。
                  色々調べてくださってありがとうございます。

                  F_TextItemsT txtitms=
                      F_ApiGetText(docId, pgfId, FTI_String|FTI_CharPropsChange);
                  ”txtitms ”に
                     FTI_CharPropsChange ← idataにFTF_CONDITIONTAG
                     FTI_String ← "テキスト"
                     FTI_CharPropsChange ← idataにFTF_CONDITIONTAG
                   が得られる。
                  F_TextRangeT tr;
                   tr.objId =pgfId;
                   tr.offset = 最初の"FTI_CharPropsChange"のoffset;

                   F_PropValT prop =
                      F_ApiSetTextPropVal(docId, &tr, &prop);

                   で"prop.propVal.u.isval"にコンディションタグのフォーマットIDが格納されている領域のアドレスが得られました。
                  • 6. Re: コンディショナンタグが適用されているテキストが知りたい
                    Level 1
                    rocket21様。

                    なるほど。
                    テキストプロパティにFO_CondFmtのidが格納されていましたか。
                    自分も勉強になりました。ありがとうございます。