「何か。」のゴースト製作記(13)(2002/03/24)
新着情報 トップメニュー ボードメニュー 掲示板 お手紙はここ!

サバゲのレポート書けよ。俺。



いやいや、新シェルでましたね〜、Materia-B。自分ので手一杯だから常駐できんけど……何とかなるまいか。
ノートパソコン使うしかないけど、どうも動作環境って高めに要求されるらしいすよ。Pentium-120MHz ぐらいじゃ駄目か。むむう。



内部での例外発生を何とか捕まえて、原因をゲロさせました。¥ エスケープシーケンスが撃ち間違いで MBCS の前に在ったというのが1件、なんか良くわからんが、さくらスクリプト形式の¥wタグでバグってたのが数件。
恥ず!

エスケープシーケンスがダブルバイト文字の前に在るかのチェックは、必要ですねぇ。未対応の文字だと何もしない様にしてあるので平気だと思ってたんですが、多分1バイト目が 'W' とか '(' とかみたいな処理の必要な文字と同じだったためでしょう……。

さくらスクリプト形式でバグるのは予想外で、なんで間違うのか判らん……。チェックした後でカウンタを送るのにミスってるのかな? けど実験では正しく通ったりする(^-^;) 長引きそうだなぁ。

まぁスクリプト自体を正しく書けば問題ないんで、今回のリリースでは修正してあるっす。
って言うか、何故か出てこないフリートークがあると思ったら、そう言う事だったんですねΣ( ̄□ ̄;



バルーン内でメニューをクリックすると音が出る……はずです。設定してあれば。コントロールパネルのサウンドアプレットで「メニューコマンド」に割り当ててあると出ます。


    if (Key <> '') then
        if RegDB.OpenKeyReadOnly( '¥AppEvents¥Schemes¥Apps¥.Default¥'+Key+'¥.current' ) then
            if RegDB.ValueExists( '' ) then
                PlaySound( PChar(Key), 0, SND_ALIAS or SND_ASYNC );

RegDB は TRegistry クラス。キーがオープンでき、データが設定してあれば鳴らすわけです。なんと解りやすい処理でしょうか(笑)

これを OnChoiceSelect イベントで MenuCommand なんかを渡すわけです。キーは、レジストリエディタで HKEY_CURRENT_USER¥AppEvents¥EventLabels を開けばリストされています。
ただし、PlaySound() API の SND_ALIAS モードで鳴らす事ができるのは標準イベントだけみたいで、エクスプローラ用に設けられている ActivatingDocument とかの識別子が使えないんですけどね……。まぁそう言う場合は HKEY_CURRENT_USER¥AppEvents¥Schemes¥Apps¥Explorer¥ActivatingDocument¥.current からファイルのパスを直接持ってきて SND_FILENAME モードで鳴らせば良いんですが。



リソースのバージョンを取り出すのに当然ファイル指定とかやるわけですが、このファイル名は直に埋めこんでました。どうせ一般公開しないし……と。でもなんか気持ち悪いので、descript.txt を IO するクラスでエイリアスの項目を読む方法に変更。やってみるとこの方がカッコイイではいか!Σ( ̄□ ̄;
なにがどうカッコイイかなんてのはやっぱりプログラマじゃないと解んないかも(^-^;) 出来れば自分自身のファイル名ぐらい取得できたら良いんですが……なんかそんなtipsもあったような気は、しています。

ついでにセットアップ用ダイアログの USP.DLL もエイリアスできるようにしました。descript.txt に setup,usp.dll とか書くですね。

必須辞書類もほぼ最初から descript.txt でエイリアスできているので、なんだかんだ言ってファイルでの設定がかなり大きくなってきましたが(^-^;) 純正仕様の倍ぐらいは項目を増やしてたり……。
しかしこう言う変更すべきでないファイルが自由に読み書きできるってばどうよ。ファイルを別にするべきか……。リソースとして DLL に突っ込んでおいて、ファイルが変更されてたら書き戻す、とかどうかな。
でもOperation雛≠フ場合、ユーザー設定も descript.txt に格納するからなあ……
書き換え不可の項目が変更されてたら書き戻すか?
つーか、読む段階でリソースから書き落とすか……。けど、load() の時点で手遅れだしなあ。うーむ。



さて、そういうわけでスクリプトを訂正したりエンバグを未然に防いでくれそうな微修正したりスクリプトを追加したりした最新版をアップしておきました。バージョンは 0.2.10.86。リリースナンバーが二桁に乗りましたか……ビルドももうすぐ三桁(^-^;)

つづく。


新着情報 トップメニュー ボードメニュー 掲示板 お手紙はここ!