|
h-tom です。
秀丸エディタ:Ver.8(正式版)
>マクロの通りにして再現させることができました。
>報告いただき大変助かりました。
>正式版では修正させていただきます。
>
>内部の全角情報フラグが一致していなくて違うと判定されてしまっていました。
>とりあえずの対策としては、
>$a = "秀丸エディタ"+unichar(0x24e9);
>というようにしておくと回避させることもできました。
文字列の比較は問題ないです。
同じ問題かもしれませんが、同じ文字列を、strstr/wscstrstr で検索しても、
見つかりません。
//ここから
loaddll "ht_tools.dll";
$a = "秀丸エディタ\u7730";
//引数をwcscpyして、Unicode文字列を返すだけの関数。
$b = dllfuncstrw("CopyW", $a);
freedll;
loaddll "HmOutputPane.dll";
$hed = "$a == $b :";
if($a == $b){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match\n");
}
$hed = "$a == \"秀丸エディタ\\u7730\" :";
if($a == "秀丸エディタ\u7730"){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match\n");
}
$hed = "$b == \"秀丸エディタ\\u7730\" :";
if($b == "秀丸エディタ\u7730"){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match\n");
}
$hed = "strstr(\"秀丸エディタ\\u7730\", $a) :";
#n = strstr("秀丸エディタ\u7730", $a);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+"\n");
}
$hed = "strstr(\"秀丸エディタ\\u7730\", $b) :";
#n = strstr("秀丸エディタ\u7730", $b);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+ "\n");
}
$hed = "strstr($b, $a) :";
#n = strstr($b, $a);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+ "\n");
}
$hed = "strstr($a, $b) :";
#n = strstr($a, $b);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+ "\n");
}
$hed = "wcsstrstr($b, $a) :";
#n = wcsstrstr($b, $a);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+ "\n");
}
$hed = "wcsstrstr($a, $b) :";
#n = wcsstrstr($a, $b);
if(#n != -1){
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "match: #n=" + str(#n) + "
\n");
}else{
#ret=dllfunc("Output",hidemaruhandle(0), $hed + "not match: #n=" + str(#n)
+ "\n");
}
freedll;
endmacro;//ここまで
//出力結果 ここから
$a == $b :match
$a == "秀丸エディタ\u7730" :match
$b == "秀丸エディタ\u7730" :match
strstr("秀丸エディタ\u7730", $a) :match: #n=0
strstr("秀丸エディタ\u7730", $b) :not match: #n=-1
strstr($b, $a) :not match: #n=-1
strstr($a, $b) :not match: #n=-1
wcsstrstr($b, $a) :not match: #n=-1
wcsstrstr($a, $b) :not match: #n=-1
//出力結果 ここまで
|
|