FindFirst
真魚を使っていて不具合を見つけたので修正予定。
今回はちゃんと理解して書いてるわけでもないので、とりあえず順番に話すか。
Windowsフォルダの奥深く、とあるテキスト形式のファイルを書き換えようとしたところ、
そのファイルを真魚では開けない事がわかった。
メモ帳では開く事が出来るんだから、これはきっと真魚に何らかのバグがあるのだろうと思った。
このテキストファイル書き換えは、複数のPCで試したが、XPでは問題なく、Vistaで問題があった。
ただしうちのVistaは、世間で広く使われている32bitのホームではなく、64bitのアルチだし、
管理者権限の操作がどうしても面倒なので、Adminでログオンするように細工もしている。
そう言う細工をしていない仮想マシンのVistaでは問題がなかった。
他にも、何をインストールしてるかとか、いろんな条件があるだろう。
だから、どんな環境だと起る不具合なのかとまだ特定していない。
真魚のソースをいじる機会もめっきり少なくなり、たまにやると忘れてる事が多くて、
問題を突き止めるために必要以上の苦労をし、一応おかしいところは見つけた。
XPではそう言う事がなかったのだが、VistaではFindFirstが効かないフォルダがあるようだ。
FindFirstっていうのは、ファイルやフォルダを検索するDelphiの関数で、
元々はFindFirstFileなどのWindows APIを使いやすくまとめた関数って事になる。
こいつが効かないと、存在するファイルやフォルダを、存在しないと誤判断する。
存在するファイルを存在しないと判断すると、真魚は、そのファイルを作成するかどうか訊いてくる。
ファイルを開けないばかりではなく、そこに新たなファイルを上書きしようとするわけで、
バグとしてはかなり深刻な物だ。
具体的には、Windows/System32/driversというフォルダの中で、ここにテキストファイルは入ってない。
しかしその中にあるetcというフォルダの中には、ネット関連の設定をするテキストファイルが入っている。
drivers内にetcというフォルダを見つけられないと、その中に入ってるファイルも見つけられない。
ということで、さてどうするかと。
その、問題が生じるパソコンは自宅にしかない。
そして、自宅でパソコンをいじる時間がない。
バグは確実にあるし、危険なバグだが修正できない。
こういう場合、安全を重視して公開打ち切りとか一時見合わせにした方が良いのか、
警告だけ書いて自己責任にしておくべきなのか。
一応、そう言うバグがあるよと言う情報公開だけはしておく。