|
こんにちは、秀丸ユーザーです。
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;
|
|