日記(934)

<前 次>

VB版を読み込んだ!

スクリプト講座、書けるものならどんどん続きを書いていきたいんですが、どうにもこうにもゆきづまり気味です。
ん~・・・でも止まったら止まったでちゃんと止まったことを告げておくべきかなぁ・・・。

NeoMuplのVB版データのインポートができました。
文字コードの関係でリスト読み込みのところでのC#版データとVB版データの共存はできませんでしたが、リストに追加するだけならC#版データを考慮する必要がないので簡単でした。

VB版を読み込もう

NeoMuplのVB版データの読み込みを作ってました。
VB版とC#版ではデータ形式が異なるので、別々の読み込みアルゴリズムを組んでやる必要があるのです。
とはいえ、=で区切るかタブで区切る海外に大きな違いもないので、ある程度は前のプログラムを流用できそうです。
ただ、ディレクトリの短縮表記がちょっと厄介ではありますが。

そうそう、卒研の配属が決まりました。
どうにも電子デバイス講座らしいです。
強誘電体デバイスを作ってるようです。

定期健康診断

ClipCaptorのページをその他のページから分離しました。
将来的には小物ソフトを含む全部のソフトを別々のページに分けるつもりです。

そうそう、今日は健康診断がありました。
身長:166.1cm
体重:50.2kg
体脂肪率:8.6%
視力(眼鏡):右1.2/左1.0
聴力:正常
尿検査:正常
内科検診:微妙に正常

オートセーブ・オートロードのAutoTextFile

日記のメニューの過去ログとカテゴリの表示を改善しました。
IEではセキュリティエラーが出ませんし、火の狐でもちゃんと動きます(スタイルは崩れますが)。

Bomber丸Worldのほうはというと、HTML表示の最終チェックをして、Wikiにアップしておきました。
それはそうと、これを作るときに副産物でできた、エラーログを監視するためのソフト、AutoTextFileをちょっとアップしてみました。
やっつけで作った手抜きソフトなので更新履歴に入れてませんが、まあ、ログ監視とか、メモ程度なら便利なんじゃないでしょうか。

NeoMuplとかミディビとかもいじってみたいところです。

ところで今日のトップページでのちょっとした冗談、見てくれた人はどのくらいいたのかな。
やっぱり嘘の閉鎖告知は周りへの迷惑が大きいと思うので、その逆をやってみたんですよ。
あのページに書いたとおり、当分閉鎖するつもりはないです。
少なくとも来年の8月までは存続しているはずです。

文字数とバイト数

トップページのカウンターを強化しました。
結局ロック処理は行わず、開いた結果が変だったらしばらく待ってもう一度読み直し、それでも変ならバックアップから読みにいくという方式にしました。
バックアップも壊れていたらもうカウントは諦めます。

ところでBomber丸WorldのHTML表示、どうにも不安定だと思っていたら、配列の大きさ決定のところで、バイト数でカウントすべきところを文字数でカウントしていたため、長いマルチバイト文字の文章だった場合メモリエラーが起こっていました。
昨日の時点で把握できなかったのは、部分文字列のためのバッファに全体のデータを入れていたために、部分文字列のバイト数<全体の文字数となっていたからでした。
あと、タグの後の最初の1文字をうまく自動改行できなかった問題を解消しました。

1175352231.png

良く頑張った自分

Shift_JISのデータがどんな範囲を取りうるかをあまり意識していなかったため嵌りかけました。
読み込んだ1バイトがマルチバイト文字の1バイト目の可能性がある間はスキップするという処理を書いていたのですが、実際には、マルチバイト文字の2バイト目はどんなデータが来てもよいので、「1バイト目にあった場合はマルチバイト文字の1バイト目として機能するデータ」が2バイト目に来る可能性もあったわけで、そういうのまでマルチバイト文字の1バイト目として解釈するとまともな文字列として矛盾が出るわけです。
だから、直前に見たのがマルチバイト文字の1バイト目ならば次は1バイト目じゃないという結果を返す関数を作ってみたのですが、この関数が、理由はよくわかっていないのですがあるタイミングで判断を誤って逆の結果を返してしまい、結果としてそれが原因だとは想像もつかないエラーが出てしまい、根本的な原因を見つけるのに時間がかかってしまいました。
結局のところ、マルチバイト文字の1バイト目が来たら忘れないうちにさっさと2バイト目を読み込んでしまうことでこの問題は解決しました。
そんなわけで、表示に関してはyaneTextDrawよりも充実したものが出来上がりました。
表示結果がイタリック体や打消し線・下線付きでも正確であることや、理屈の上ではyaneTextDrawより数倍画像生成が速く、解像度変化への対応も自動で可能であり、「外字」という特別な枠組みを設けずに素直にimgタグで画像の表示が可能で、テキスト表示の拡張であるがゆえにただの文字列からある程度自由な装飾まで可能であり、自然な形で自動改行もされ(ただしワードラップは未対応のはず)、セリフ表示への利用向けに特定文字数相当の部分のみの表示などなど、RPGのセリフ枠に使うためにかなりyaneTextDrawとは違うものになりました。
まあ、良く頑張った自分。ということで。

イタリック体の問題

なーんかBomber丸WorldのHTML表示、文字列の大きさの計算で手間取ってます。
とりあえずGetTextExtentExPoint使ってみるかーというところで、戻り値のそれぞれの文字までの距離の配列alpDxはマルチバイト文字に対してどうなるかがわからないとか、まあ、そんなところなんです。
あと、HTML解析で一部の重要な実体参照が使えるようになったりもしました。
なんというか、イタリック体の処理が面倒ですね。
あまり使いどころがないのに!

<前 次>