Skip to main content
Known Participant
December 15, 2004
Question

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

  • December 15, 2004
  • 6 replies
  • 1306 views
突然ですが、質問があります。

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

どなたかお力をお貸しください。
お願いします。
    This topic has been closed for replies.

    6 replies

    Participating Frequently
    December 17, 2004
    rocket21様。

    なるほど。
    テキストプロパティにFO_CondFmtのidが格納されていましたか。
    自分も勉強になりました。ありがとうございます。
    Known Participant
    December 17, 2004
    出来ました。
    色々調べてくださってありがとうございます。

    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が格納されている領域のアドレスが得られました。
    Participating Frequently
    December 17, 2004
    自己レス、です。

     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
    なんです。

    コンディションタグ名、どうやって引っ張ってこれるんだろう?
    Participating Frequently
    December 16, 2004
    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 />という感じでしょうか?
    Known Participant
    December 16, 2004
    さっそくの回答、ありがとうございました。<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.u.idata & FTF_CONDITIONTAG)<br /> {<br /> ここがコンディションタグのテキスト<br /> txtitms.val.u.sdata<br /> }<br />}<br /><br />こういった感じですかね?
    Participating Frequently
    December 15, 2004
    rocket21様。

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

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

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

    あまり参考にならないですね...。