findhidemaruで日本語ファイル名No.10063
igus さん 23/01/19 11:02
 
findhidemaruで日本語ファイル名とかパスに日本語が使われている場合に
見つけてくれないのですがこれは仕様でしょうか?
それとも私の使い方が悪いのでしょうか?

仕方なく while文で開いてる秀丸のファイル名をチェックしてみたのですが
こちらはちゃんと動作します。

秀丸エディタVer9.19
マクロはBOM付きUTF-8とSJISの両方で確認しましたがどちらも同じ結果でした。

//findhidemaru.mac

message filename; //=>c:\\sugi\\ほげ.txt
message str(findhidemaru(filename)); //=>-1

#c= hidemarucount;#i=0;#flg=0;
while(#i<#c){
  $fn[#i]=filename[#i];
  if(filename[#i]=="c:\\sugi\\ほげ.txt"){#flg=1;break;}
  #i=#i+1;
}
message str(#flg) //=>1

[ ]
RE:10063 findhidemaruで日本語ファイル名No.10064
秀丸担当 さん 23/01/19 12:24
 
まずfindhidemaruは、自分自身は対象にならないということがあります。
findhidemaru(filename)は、ほとんどの場合は見つからないということになると思い
ます。
同じファイルを別の秀丸エディタで開いている場合は、自分以外のものが見つかりま
す。

フルパスや日本語で、結果に違いがあるかどうかは、こちらで試してみたところは問
題なさそうでした。
おそらく自分自身が対象かどうかという問題だったのではないかという気がします。

[ ]
RE:10064 findhidemaruで日本語ファイル名No.10065
igus さん 23/01/19 12:55
 
自分以外の場合でもfindhidemaruで見つけてもらえなくて
悩んでいました。
再現されないということは自分の環境だけの問題なのでしょうか?

一応、先の方法で対策は取れているのですが
この度ちょっと悩んだことと
findhidemaruでできた方が便利でしかも美しいって思ったたため
報告させてもらいました。


[ ]
RE:10065 findhidemaruで日本語ファイル名No.10066
秀丸担当 さん 23/01/19 14:05
 
自分自身でなくてもできないとしたら、何らかの問題があるのだと思います。
ソースを調べてみたら、コードページ関係や、ロングファイル名関係の昔の処理があ
って、何か怪しそうではありました。
もう少し調べてみます。

[ ]
RE:10066 findhidemaruで日本語ファイル名No.10067
秀丸担当 さん 23/01/19 15:28
 
調べてみて、コードページ関係の問題として、現在のファイルが例えば欧文のエン
コードの種類で開いているような場合、うまくいきませんでした。
この場合もできるように修正します。

ロングファイル名関係として、ファイルシステム上短縮ファイル名が存在する場合
(例えば"ほげげげ.TXT"が"ほげげ~1.TXT")、そのファイル名としても見つかるよう
にしてありました。
これは見つからないというより逆に見つかるようになることですが、filename3とか
もあるのでいじらないでおこうと思います。

[ ]
RE:10067 findhidemaruで日本語ファイル名No.10068
igus さん 23/01/20 10:59
 
igus wrote:
> message str(findhidemaru(filename)); //=>-1

自分自身を探してるのに-1になるのがおかしいと思ったのですが
これは常に-1になるものだってことで納得しました。
仕様としてはちょっとどうかなって思う部分はありますが。

今日試してみたところではちゃんとfindhidemaruが機能してるようで
不具合が再現できなくなりました。

当初パス名を"c:\\sugi\\ほげ.txt"でなく"c:/sugi/ほげ.txt"
なんてふうに記述してたためエラーになってた事もあって
ちょっと混乱して勘違いしてたかも知れません。
openfile だと"c:/sugi/ほげ.txt"という書き方も許容されてるようで
findfile でもつい使ってしまってました。

また不具合が再現できて条件が絞り込めたら相談させていただきます。

[ ]