アーカイブ

2009年 2月 20日 のアーカイブ
1392 letters | 1442 views | コメントする

ついでというか、せっかく久しぶりに真魚のソースコードをいじったので、少しバージョンアップ。

まずは、タブに閉じるボタンをつけた。
まぁこれが誰が見ても閉じるボタンに見えるかどうかは怪しいところだが、
そこをクリックしたときの異変を一度体験すれば、おそらく誰でも閉じるボタンだと認識すると思う。
×印の四角で右上にある物って言ったら、やっぱり閉じるボタンしかないもんな。
そう言う事も踏まえて、タブ自体の右上にボタンを配置した。
あたしは、真魚でタブを閉じるときは、中ボタンでクリックしている。
Delphiでタブを閉じるときもそうするし、VisualStudioで閉じるときもそうする。
だが、中ボタンがタブを閉じるときの標準ボタンかどうかは自信がない。
標準では中ボタンが閉じるにアサインされていないアプリもたくさんあるし、
そう言うアプリは手動で中ボタンに設定した記憶もある。
どれだかは覚えていない。
とにかく、閉じるときは中ボタンだと体で覚えてしまうと、他のアプリを使うときにこんがらがる。
こんがらがらないために他のアプリを中ボタンに設定するのは面倒くさい。
それよりいっそ、タブに閉じるボタンがあれば、誰でもそこを普通にクリックするからわかりやすい。
今までの真魚では、タブに描かれるアイコンとファイル名がかなり離れていたので、
これをぎゅぎゅっと詰めたら、ちょうど閉じるボタンをかけるスペースを確保出来た。

あと、あたしは全然使った事がないが、UWSCというスクリプトの色分けを作ってみた。
http://www.uwsc.info/
あんまりメジャーなスクリプトだと、より多くの人の利便性に対応するために複雑化する宿命で、
色分けも大変になってしまうのだが、このくらいマイナーだと簡単に出来てしまう。
やったのは、コメント行、文字列、16進数、あと予約語らしき物。
色分けに関しては、ホントはいろんな言語にどんどん対応していきたい。
ヒマがあれば。

それから、その色分けをプログラミングする際、予約語の一覧をソートする必要が生じ、
昔のSJISだった時の真魚にはソートがあったのに、内部ユニコードになってからは、
Delphiがユニコードをソート出来ないという理由で、しばらく真魚でソートは出来なかったのだ。
で、今の新しいDelphiは一応ユニコード対応らしいから、Delphiの機能をそのまま使い、
以前のように真魚でソートできるようにした。
真魚の機能はなるべく減らしたいけれど、こういう将来も自分で使う機能はつけちゃう。

まぁ、今日の所はこんなもんか。

真魚を使っていて不具合を見つけたので修正予定。

今回はちゃんと理解して書いてるわけでもないので、とりあえず順番に話すか。
Windowsフォルダの奥深く、とあるテキスト形式のファイルを書き換えようとしたところ、
そのファイルを真魚では開けない事がわかった。
メモ帳では開く事が出来るんだから、これはきっと真魚に何らかのバグがあるのだろうと思った。
このテキストファイル書き換えは、複数のPCで試したが、XPでは問題なく、Vistaで問題があった。
ただしうちのVistaは、世間で広く使われている32bitのホームではなく、64bitのアルチだし、
管理者権限の操作がどうしても面倒なので、Adminでログオンするように細工もしている。
そう言う細工をしていない仮想マシンのVistaでは問題がなかった。
他にも、何をインストールしてるかとか、いろんな条件があるだろう。
だから、どんな環境だと起る不具合なのかとまだ特定していない。

真魚のソースをいじる機会もめっきり少なくなり、たまにやると忘れてる事が多くて、
問題を突き止めるために必要以上の苦労をし、一応おかしいところは見つけた。
XPではそう言う事がなかったのだが、VistaではFindFirstが効かないフォルダがあるようだ。

FindFirstっていうのは、ファイルやフォルダを検索するDelphiの関数で、
元々はFindFirstFileなどのWindows APIを使いやすくまとめた関数って事になる。
こいつが効かないと、存在するファイルやフォルダを、存在しないと誤判断する。
存在するファイルを存在しないと判断すると、真魚は、そのファイルを作成するかどうか訊いてくる。
ファイルを開けないばかりではなく、そこに新たなファイルを上書きしようとするわけで、
バグとしてはかなり深刻な物だ。

具体的には、Windows/System32/driversというフォルダの中で、ここにテキストファイルは入ってない。
しかしその中にあるetcというフォルダの中には、ネット関連の設定をするテキストファイルが入っている。
drivers内にetcというフォルダを見つけられないと、その中に入ってるファイルも見つけられない。
ということで、さてどうするかと。

その、問題が生じるパソコンは自宅にしかない。
そして、自宅でパソコンをいじる時間がない。
バグは確実にあるし、危険なバグだが修正できない。

こういう場合、安全を重視して公開打ち切りとか一時見合わせにした方が良いのか、
警告だけ書いて自己責任にしておくべきなのか。

一応、そう言うバグがあるよと言う情報公開だけはしておく。