質問:hmjre.dll と leftstr などNo.10773
dszhm さん 06/07/07 09:53
 
環境は
OS:WinXP SP2
秀丸エディタ:6.00 β33
HmJre.dll:1.78
です。
HmJre.dll の FindRegular 関数で
[A-Za-z]で開始位置を検索し、
GetLastMatchLength 関数で長さを取得し、
leftstr 関数と rightstr 関数で前後の
文字列を取り出したいのですが、
HmJre.dll の関数が文字数であるのに対して
leftstr 等がバイト数であるので
対象文字列を1文字ずつチェックしないと
できないようです。
BRegExp.dll では、[A-Za-z]の検索が
うまくいかなかかったのですが、
多くのマクロを登録されている方々は
このような場合にはどのように処理されているのでしょうか?

[ ]
RE:10773 質問:hmjre.dll と leftstr なNo.10774
秀丸担当 さん 06/07/07 15:28
 

>HmJre.dll の FindRegular 関数で
>[A-Za-z]で開始位置を検索し、
>GetLastMatchLength 関数で長さを取得し、
>leftstr 関数と rightstr 関数で前後の
>文字列を取り出したいのですが、
>HmJre.dll の関数が文字数であるのに対して
>leftstr 等がバイト数であるので
>対象文字列を1文字ずつチェックしないと
>できないようです。

GetLastMatchLengthで得られるのもバイト数だと思いますが、文字数とは、全角
文字も1文字としてカウントする文字数になっているということでしょうか。
具体的なマクロのサンプルなどを示していただけるとこちらでも確認できるかも
しれません。

[ ]
RE:10774 質問:hmjre.dll と leftstr なNo.10775
dszhm さん 06/07/07 21:14
 
>
>>HmJre.dll の FindRegular 関数で
>>[A-Za-z]で開始位置を検索し、
>>GetLastMatchLength 関数で長さを取得し、
>>leftstr 関数と rightstr 関数で前後の
>>文字列を取り出したいのですが、
>>HmJre.dll の関数が文字数であるのに対して
>>leftstr 等がバイト数であるので
>>対象文字列を1文字ずつチェックしないと
>>できないようです。
>
>GetLastMatchLengthで得られるのもバイト数だと思いますが、文字数とは、全角
>文字も1文字としてカウントする文字数になっているということでしょうか。
>具体的なマクロのサンプルなどを示していただけるとこちらでも確認できるかも
>しれません。
FindRegular関数では、
「ヒットした場合はその位置を返します。」
となっていて、
GetLastMatchLength関数では、
「マッチした文字列の長さを返します。」
となっていたので、全角文字も1文字と思い込み、
leftstr 関数では、
「全角文字は2文字として数えます。」
となっていたので、質問させていただいたのですが、
週明けに出社したら、再度挑戦してみます。


[ ]