HmJre.dll の FindGeneral 関数についてNo.08111
titti さん 16/05/17 23:51
 
こんにちは、秀丸ユーザーです。

HmJre.dll の FindGeneral 関数がおかしい動作をします。
バグなのか関数の使い方が悪いのか判断がつかないため、
問い合わさせていただきます。

【把握している状況】
(1) 正規表現を ON または あいまい検索を ON の場合は正常に動作。
(2) 正規表現を OFF かつ あいまい検索を OFF の場合に2つ問題が発生。
 (2-1) 検索したい文字列が1バイト文字で、対象文字列に2バイト文字
   があると正常に検索できない。
 (2-2) 検索を開始する桁位置の指定がきかない。
(3) 正規表現を OFF かつ あいまい検索をOFF の場合でも、
 大文字/小文字の区別あり/無し は正常に動作する。

【テスト環境】
秀丸エディタ:V8.56 32bit edition
OS:Windows XP SP3

試験用のマクロを載せておくので確認していただけると助かります。
よろしくお願いします。



// HmJre.dll をロード
loaddll "HmJre.dll";
if( !result ) {
    message "HmJre.dllのロードに失敗しました。";
    endmacro;
}


//(2-1) 検索したい文字列が1バイト文字で、対象文字列に2バイト文字
//  があると正常に検索できない。
#n = dllfunc("FindGeneral", 1, 0, 0, "B", "ABCDEabcde", 0);
message str( #n ); // 2 を返す。○
#n = dllfunc("FindGeneral", 1, 0, 0, "b", "ABCDEabcde", 0);
message str( #n ); // 5 を返す。×
 // "b" (0x62) が "C"(0x8262) の下位バイト(0x62) にヒット?

#n = dllfunc("FindGeneral", 1, 0, 0, "C", "ABCDEabcde", 0);
message str( #n ); // 4 を返す。○
#n = dllfunc("FindGeneral", 1, 0, 0, "c", "ABCDEabcde", 0);
message str( #n ); // 7 を返す。×
 // "c" (0x63) が "D"(0x8263) の下位バイト(0x63) にヒット?


//(2-2) 検索を開始する桁位置の指定がきかない。
#n = dllfunc("FindGeneral", 0, 0, 0, "b", "ABCDEabcdeABCDEabcde", 0);
message str( #n ); // 1 を返す。○
#n = dllfunc("FindGeneral", 0, 0, 0, "b", "ABCDEabcdeABCDEabcde", 10);
message str( #n ); // 1 を返す。×

#n = dllfunc("FindGeneral", 1, 0, 0, "b", "ABCDEabcdeABCDEabcde", 0);
message str( #n ); // 6 を返す。○
#n = dllfunc("FindGeneral", 1, 0, 0, "b", "ABCDEabcdeABCDEabcde", 10);
message str( #n ); // 6 を返す。×
 // 大文字/小文字の区別あり/無し は正常に動作する。


// DLL を開放
freedll;

endmacro;


[ ]
RE:08111 HmJre.dll の FindGeneral 関数No.08112
秀まるお2 さん 16/05/18 09:41
 
 HmJre.dll担当の秀まるおです。

 連絡いただいたマクロでテストして現象確認し、ソースコードの見直しで、た
しかにバグも確認できました。

 正規表現OFF&あいまい検索OFFの場合はHmJre.dllの正規表現の処理を通さず
に、独自に作った普通の文字列検索の処理が働いてまして、その処理が手抜き&
テスト不足でバグってしまってました。

 今まで正規表現ありかあいまい検索ありでしかテストしてなかった可能性が高
いです。大変失礼しました。

 次にアップロードする秀丸エディタにバグ修正版を添付させていただきます。

[ ]
RE:08112 HmJre.dll の FindGeneral 関数No.08114
titti さん 16/05/18 11:12
 
秀まるお様、こんにちは。
titti です。

回答して頂いた件、承知しました。
大変お手数ですが修正の方、よろしくお願い致します。

[ ]
RE:08114 HmJre.dll の FindGeneral 関数No.08118
titti さん 16/05/18 19:49
 
V8.59 でバグ修正されているのを確認しました。
ありがとうございました。

[ ]