GetLastMatchTagPosition, GetLastMatchTaNo.08640
colder さん 15/06/26 13:40
 
colderです。
hmjre.dllのGetLastMatchTagPosition, GetLastMatchTagLengthについてなんですが、
この関数が返す値は直前のFindRegular, FindRegularNoCaseSense関数が行った検索
が対象になっていると認識していたのですが、
検索でヒットしなかった場合は対象外になっているようです。
また、ReplaceRegular, ReplaceRegularNoCaseSense、FindGeneral(正規表現検索を
行った場合)関数も対象になっているようです。
GetLastMatchTagPosition, GetLastMatchTagLengthの仕様は、この認識で合ってます
か?


[ ]
RE:08640 GetLastMatchTagPosition, GetLaNo.08641
秀まるお さん 15/06/26 15:17
 
> 検索でヒットしなかった場合は対象外になっているようです。

 タグの位置を覚えておく用の変数が固定で存在してるんですが、調べてみたら、
検索でヒットしなかった場合は、それらの変数が何も書き換えられてませんでし
た。

 何かヒットすると書き換えられるって仕組みでした。

 ヒットしなかった場合はそれら内部変数をクリアすべきのような気がするんで
すが、とりあえず現状の仕様としては、ヒットしなかった場合は変数の値が書き
換えられず、結果として、もっと前に検索してヒットした結果の位置を保持しつ
づけるような動作になるようです。

 仕様としては…

 ヘルプに追加の文章として、

 FindRegularまたはFindRegularNoCase関数が-1以下の値を返した場合(ヒット
しなかった場合)には、GetLastMatchTagPosition / GetLastMatchTagLengthの
返す値は不定です。

 って文書を追加させていただこうかと思います。

> また、ReplaceRegular, ReplaceRegularNoCaseSense、FindGeneral(正規表現検索を
> 行った場合)関数も対象になっているようです。

 たしかにそうなってました。

 ただ、Replace系の場合だと、複数文字列の置換も出来てしまうので、その場
合にタグ位置がどうなるかまで保証するのは難しいので、Replace系関数呼び出
し後のGetLastMatchTagPosition / GetLastMatchTagLengthの返す値は不定って
ことにさせていただこうかと思います。(たぶんそういう必要性も無いと思う
し)

 これまたヘルプに追加させていただきます。

[ ]
RE:08641 GetLastMatchTagPosition, GetLaNo.08642
秀まるお さん 15/06/26 15:34
 
 あと、ヘルプの方は修正させていただきますが、HmJre.dllのバージョン自体
は同じのままで、ヘルプの差し替えだけってことにさせていただきます。

[ ]