1年ぶり!ByteEdit更新!
なんとかVBも起動できたので拾ってきたサンプルを参考に、というかそのまま使ってホイールマウスによるスクロールに対応させました。
WithEventsのあるクラスを使うのは初めてだったので最初はうまくいきませんでしたが、きっちりサンプル通りにやってみるとうまく動いてくれたようです。
なんとかVBも起動できたので拾ってきたサンプルを参考に、というかそのまま使ってホイールマウスによるスクロールに対応させました。
WithEventsのあるクラスを使うのは初めてだったので最初はうまくいきませんでしたが、きっちりサンプル通りにやってみるとうまく動いてくれたようです。
戻りました。
で、ByteEditをホイールマウス対応にしようと思ってVBを開いたらVB側でエラーが起きて落ちました。
う~ん、ホイールでスクロールできるとすごく便利なんだけど…。
こないだの限界突破したLineConstructorとByteEdit、今日アップしました。
NeoMuplのDirectMusicをどのように使うか決めるため調べものしてました。
MIDIの再生にはDirectShowよりもDirectMusicのほうが、読み込みが速かったり演奏が正確だったりして適しているのですよ。
で、DirectMusicですが、DirectX 7 for Visual Basicが、機能面や手軽さからよさそうだったので使うことにしました。
そうそう、自動ソート機能も実装しました。
ファイル名順、タイトル順、再生日時順の3つを、昇順と降順の2種類用意したので、合計で6種類のパターンから選べます。
曲を追加したときに並べ替えられるのはもちろんのこと、再生日時順のときだけ、再生するたびに並べ替えが実行されます。
VB6のスクロールバーの最大値を32767から2147483647に仮想的に引き上げるクラスを作ってみました。
方法としては、従来のスクロールバーの値域0~最大32767を0~好きな値にマッピングしているので、指定した値が32767を超えるとスクロールバーの指す値が大雑把になってきます。
例えば最大値を65534にすると、スクロールバーで指定できる値は、0、2、3、4、8・・・となりますが、もちろんその間の値もプログラム側で数値指定してやれば取ることができます。
とりあえず、これをByteEditとLineConstructorにつけてやって、ファイルサイズ制限や読み込み行数制限を取っ払ってやりました。
ByteEditのほうはヘルプも最新のスタイルシートを使ってリニューアルです。
LineConstructor、選択した場所が変わったときスクロールが付いてきていなくて不便だったので追随するようにしてみました。
今のところマウスのボタンを押したまま画面外までカーソルを持っていってスクロールさせる方法が中途半端にしかできていないのでSetCapture/ReleaseCapture系のAPIを用いて画面外でも正しく位置を検知できるようにするのが当面の課題、って、すぐできますが。
ByteEditでもそのうち同じ機能をつけるつもりです。
それと、必要なのは閉じるときの保存確認ですね。
ついつい保存を忘れて閉じちゃいます。
そうそう。横スクロールもつけないと。
ミディビ受信プログラムの正規表現の件、バッチリOKみたいです。
\x00のような記法でバイナリデータ全部問題なく正規表現に使えそうです。
テキストを抜き出すのも比較的簡単にできそうですよ。
レポート中。
一応、ByteEditを更新したり掲示板にアイコンを1個増やしたりはしましたけど。
日記と掲示板のプログラムをちょっと改良しました。
いずれもメンテナンス部門の変更なのでユーザーが使える部分では変更ありません。
FFCCでは、ちょっと気まずい手紙を拾って受け取ってしまったためリセット。
結構アイテム手に入ってたんだけどな。
ByteEditでも改良してみようかと思ったのですが、どうも今日中には間に合いそうにないです。
ファイルとの比較を作れば解析が簡単になるかなぁと思ってたり。
学校のパソコンで昨日に引き続き3Dを頑張ってみました。
とりあえずネットでサンプル明後日適当に自分なりに書き換えて2Dポリゴンを表示して自己満足して3Dポリゴンも調子に乗ってやってみようとしたら突然リンカエラーが!
libci.libが見つかりませんって言われたって、そんなのリンクするような設定はしていないのですが・・・?
で、勿論早速MSDNライブラリで調べてみたわけですが、見つからない。
帰ってからもう一度調べてみたら、「古い iostream ライブラリ」とのことで、「最新だったら新しいの使えよ!!」などと思ってみたりもしたのですが、新しいのにどうやって変えればいいのか、新しいのに変えることで不具合が起きるんじゃないか、新しいのがまだ古いのを使ってるのに何故に古いものを切り捨ててしまったのか、などなど気になってしまって、別に何もしませんでした。(何
「ByteEdit」を更新しました。
選択内容を検索します。
ついでに言うと、ドラッグによる範囲選択と右クリックにもこっそり対応させたので、検索したいバイト列をドラッグで反転→右クリックから検索で、簡易ながらもバイト列の検索ができるようになりました。
そこそこ拡張しやすい形になっていたので両方ともちょっとだけ手を加えただけで実現できました。
こんな感じですぐできる更新をちょっとずつやって行くことにしてます。
前にヘッドホンが壊れてしまっていたので、学校の帰りにヘッドホンを買ってみました。
買いに行くと、6000円くらいのオープン型・3000円くらいの密着型・2000円くらいの密着型・1000円程度のオープン型があったのですが、6000円のは完全に予算オーバーで問題外、1000円のは用途から考えてふさわしくないと感じ却下、3000円のは2000円のと比べてどこがいいのかわからなかったので結局2000円のにしました。
ピクミンその他のゲームのページ、気が向いたのでアップしてみました。
ついでにリンク集もちょい整理。
そんでもって新日記公開。
ピクミンのページ作りました。
ピクミンってどう考えたって扱いが奴隷。
今のところアップしてません。
気が向いたらアップします。
ちょっと学校のパソコンでDirectX8で3Dでもやってみようかと思ったのですが、チュートリアルが意味不明だったため挫折。
変数が何のために使われてどこでどう定義されて他の変数との関係がどうなのかとかがさっぱりわからないので打ち込んだところでどうにも…
DirectXGraphicsに統合された分簡単だと思ったのですが。
新日記2002年分の過去ログを仮入力完了しました。
12月の日記はほとんど同じ話題が続いていたので楽でした。
さて後1年半分…
そろそろ更新しようかと思います。
ByteEditかDirectXでも。
WindowsMediaPlayer10をインストールしました。
またまたデザインが変わってて、でも内容はどこがどう変わったのかわからなくて、結局更新チェックのダイアログを出さないためにバージョンアップしたという感じ。
Lunascapeもバージョンアップしてたけど特に必要な機能はなし。
検索するたびにバージョンアップ通知が来るので鬱陶しいことこの上ない。
なんか落ちるバグが修正されたとかで、一応インストールしましたが、30日しか使えないらしいRoboFormやら別にいらないのばっかり付いてきて、やっぱりWMP10と同じ状態に。
ランキングCGI、完全オリジナルにしました。
自分で書いた部分以外のコードを全部消して書き直し。
ロック処理とかがかなり甘くなったけど多分消えないから気にしない。
「ByteEdit」に超簡易右クリックメニューを付けてみました。
すぐ上にある編集メニューをそのままPopupMenuで出しただけ。
クリップボードの内容、せめて「ByteEdit」間だけでも共有できるようにしたいと思い、ひとつアイディアを。
クリップボード用一時ファイルを作る!
しかし旧バージョンと異なるクリップボードを使えば何かと面倒な気が・・・・処理速度も・・・
やっぱバイト列検索は時期尚早だ。
前の地震についての日記、不謹慎だったかも。
いやはや、ときおですだ。
めっきり冷え込んできた今日この頃、寒がりのワタクシは部屋の中でも上着を脱がなかったり脱いだりするのでありますが、いやねえ、レポートですよ、レポートの話。
今日が再提出の最終締め切りで今日中に出さないと危ないと思ってめっちゃんこ急いでレポートを書き直して、足りなかったデータとかもいないはずの友達から入手して、ダメダメなレポートを修正するのであるますが、いくらなんでも再提出せえゆわれて3日で出すのはきつすぎる、まるで○○の××ではないか!
などなどと思いまして、も~いちどレポートの出し方とか期日とか、そんなところを見間違えて、いやいやいや、見てみたならば、ど~やら提出の最終期限は来週までだった模様。
そりゃも~、3日で出せなんてそんなの無理だって!
否、不可能を可能にするのがこの私だ。
さてと、いろいろ細かいところから重大なミスから致命的なものまで指摘され、兎に角一週間で仕上げねばならず、とはいえ来週は祝日があるので実質六日、頑張るのでございます。
さて、明日更新せねばならぬこのご時世、え~かげん超リアルプログラミングを始動させようかと思ったりも一瞬しましたのでござりまするが、なにぶんいざ実行に移そうとした段で急に飽きてしまい、最後までありゃー未完成で終わってしまいそうな気がして候。
んでもってそんなわけで、「ByteEdit」をHTMLヘルプにもちっとまともに対応させる気はないのかと心の中の天使が囁くのです。
更新の催促をするとは、まさにアクマのようなテンシです!
ちなみにその天使の名前はガジラというそうで。
おお、主よ、全知全能ではない「Tokio's Web Site」の主よ、可能であるならばついでにバイト列の検索にも対応させたまえ!
実のところ検索そのもののコードは文字列の検索と全く変わりないのであって、問題はいかにして入力を行わせるか、いや、簡単なんだけどね、やってみます。
17日までは更新しないといっていたのですが、スケジュールの都合がつきそうだったので今日更新しました。
本当はもっと昼間のうちに完成させてアップする予定だったのですが、スリザーリンク(http://www.pro.or.jp/~fuji/java/try/numline/index.html)の問題85が解けたと思ったら輪っかが2つできてしまって意地になってしまい更新が遅くなりました。
あんまり難しいことをやっているわけでもないのにバイナリエディタには検索機能が搭載されていないことって多いんですね。
バイト列の検索は検索用入力フォームを作るのが面倒だったので後回し。
Windowsアップデートをしました。
JPEGを表示したらパソコンがぶっ壊れるかもしれない不具合を直したとのこと。
画像ごときに破壊されるWindowsXpって一体…
「Bomber丸World」のBGM作っていました。
「ふにゃふにゃ」のタイトル没曲のアレンジバージョンです。
もっと元気にということで楽器変えてみたんですが、メロディが同じじゃあんまり印象は変わらないかなぁ…
とりあえず作りかけのものをMIDIにしてアップしてみました。
「ByteEdit」の検索ダイアログを作っていました。
元々バイト列の検索と文字列の検索でそれぞれ別のダイアログを使う予定でしたが、ひとつのダイアログで両方使えるようにすることにしました。
とはいえ、今回は文字列の検索のみなのでバイト列の項目は全て利用不可になっています。
検索のアルゴリズムは既に考えてあるので、あとはそれをコード化するだけです。
ByteEditニューバージョンです。
大分それらしくなってきました!
でもまだまだ!検索&置換機能も作りたいのです。必要なのです!
今度はこれを目標ということで、今までよりはウィンドウを増やさねばならない分難しそうですが、頑張ってみます。
つきの更新はDirectDrawか「ふにゃふにゃ」で。
あ、一応ゲーム紹介のドラクエ3のところ、開通しておきましたんで。
「RPG±0」のイベント編集で、機能拡張にあわせて編集画面を出す処理を変えなかったために編集できないようになっていたのを修正しました。
今後はマップ間移動の処理を作ろうかと思っています。
Q&Aのページを自己紹介のCGIと同じ方式にしました。
見た目はともかくこっちのほうが管理しやすいのでこちらにしました。
アクセスログを回収しました。
とりあえず先月は新たなリンクはなし、yahooがいまだにHPMに人を招き入れている、403エラーは想定しているもの以外は特にない模様。
ダウンロード数は微妙に減りましたが好調です。
日記過去ログの11月分とゲーム紹介のページを更新しました。
メトロイドやらFFCCやらマリオ64をやりつつCGIとかゲームとか作っています。
弟の友達が来てスマブラをやった模様。
どうでもいいけど。
明日か明後日あたりByteEditをアップします。
「ByteEdit」のアンドゥ機能を実装しました。
アンドゥ機能そのものはただアンドゥバッファと編集中のデータを入れ替えるだけ。
詳しくは先日の日記で。
「カービィのエアライド」のシティトライアルのクリアチェッカーのデータを入れてみました。
今回はゼロヨンアタック編です。
最高速がものすごいハイドラならタイム一桁も可能なので、マシンが限定されていなければこれを使うと確実です。
「CharaBox」に重複チェック機能を追加しました。
NodeのNextは同じ階層で次のノードがないとNothingが入っています。
当然といえば当然だけど、念のため調べてみました。
これってヘルプには書かれていないんですね、全く。
そんなわけで、エリックとフレアが二人登録されていました(もちろん別人)。
カウンターを改良しました。
見ての通り、登録フォームと説明をわかりやすくしただけです。
ドラクエ7のモンスター職について調べていました。
| スライム | ドラゴスライム | プラチナキング | |||
| リザードマン | |||||
| ゲリュオン | アンドレアル | エビルエスターク | |||
| ダンビラムーチョ | |||||
| サンダーラット | |||||
| プロトキラー | デスマシーン | ||||
| 爆弾岩 | ゴーレム | ||||
| バーサーカー | |||||
| 腐った死体 | 呪いのランプ | 魔人ブドゥ | |||
| ミミック | |||||
| 踊る宝石 | ヘルバトラー | ||||
| エビルタートル | フライングデビル | ||||
| 花カワセミ | |||||
| キメラ | |||||
「ByteEdit」のアンドゥ機能の構想を練っていました(本当は今日作ってしまうつもりだったのですが)。
まず、何か編集動作をしたときには、変数に何の操作をしたのかを記録する。
そして、その前に以前の値と比較して、以前と違う動作をしたときにはアンドゥバッファに編集前のデータを写す。
アンドゥ機能を利用するときは、現在のデータとアンドゥバッファをごっそり入れ替える。
これは、メモ帳と同じで、2回目以降はアンドゥする前の状態に戻ったりします。
最近は複数回アンドゥに対応するソフトが増えてきているようですが、私の作るソフトにそこまで期待しちゃいけません。
旧HPMを可能な限り縮小しました。
502バイトまで小さくしましたけど、見に行かないでください。
見ている人がいるとファイル削除できませんので。
ちなみに、トップページ以外にはもう用はないので完全に削除しました。
「ByteEdit」をバージョンアップしました。
クリップボードもどきを加えてみました。
結局クリップボードは実装できませんでした。
DDEを使ったデータ共有もできませんでした。
なぜなら、面倒だったからです。
そこで、ローカルなクリップボードを使いました。
それは一つのプログラム内でのみ通用するものです。
今回はこれで妥協しました。
そこで、もうひとつ問題を発見しました。
それは、データサイズに関する問題です。
問題の原因はスクロールバーにありました。
スクロールバーのプロパティには32767までしか指定できないものがあります。
それはMaxプロパティです。
その値は計算式で表されます。
計算式は、「データサイズ÷一行の桁数」の整数部分です。
よって、エラーが起こります。
エラーが起きるのは「データサイズ÷一行の桁数」が大きくなったときです。
そのときの値は32768以上です。
エラーを起こさないためには必要なことがあります。
それは、計算式の値を32768以上にしないことです。
つまり、データサイズを「一行の桁数×32768」未満にすることです。
言い換えれば、上限が定まります。
それは、データサイズの上限です。
「ふにゃふにゃ」の改良案を更新予定に追加しました。
昔から考えていたことなのですが、今日思い出したので書いてみました。
父が新しいデジカメを買ってきていました。
どうも以前に注文したものが今日入荷されたらしく、電話がかかってきて、取りに行っていました。
既に24枚撮影した模様。
「マザー」をやっていて、とりあえずレベルアップは置いといてストーリー進行を急ごうとしたのですが、ダンカン工場であっさりミサイルを見つけるも帰り道がわからなくなり、ウロウロしながら結局全部の部屋を回り、そこそこレベルアップができ、電車も無事開通され、砂漠に到着したのですが、敵がPKフリーズγで危機的状態にしたりSMAAAAASH!して100以上のダメージを与えたり大爆発したりして、撤退を余儀なくされ、訪れた病院で風邪を移されて治療費を余計に取られたりして、そろそろ面倒になってきてセーブしてやめました。
「ByteEdit」のコピー&ペースト処理を作っていて、エラーが起こる原因は使用している変数がローカル変数であり瞬時に消えてしまうのが原因かと思い、モジュールレベルにして変数が生きてる時間を増やしたところ、コピー・ペーストともに正しく行われるようになりましたが、相変わらずVBからコピーしたものはぐちゃぐちゃになり、しかもしばらく使っていると他のプログラムでコピーを実行した瞬間に固まってしまったりとか、忘れたころにいきなりエラーが出たりとかして、全く安定していないので、そもそもクリップボードを使う必然性があるのかといわれると、たとえ使うにしてもクリップボードの形式にバイナリ形式がない以上、オリジナルの形式によって使わねばならず、そうなれば他のソフトとクリップボードの内容を共有できるメリットなんて皆無なわけですから、いっそのことこれまで調べてきた全てを捨ててDDEによって似たような機能を「ByteEdit」内だけで構築し、複数の「ByteEdit」のどれかがクリップボード代わりになってもらって、それが終了されたら最初に見つけた仲間にクリップボードの内容を託して、全部終了されたらクリップボードはなくなる、っていうのも悪くないかもしれません。
「Another HTML-lint Gateway」を入れてみました。
あれって文字コードJISだったんですね。
改行コードがLFだったのでエラー起こしてました。