kr_ryo 徒然日誌 <2004年10月24日分>

三國志製作記79〜データベース導入…しかし…〜

いやあ、今年は記録に残る台風ラッシュ、おまけに最後の一撃がすさまじいものがありましたね〜(T-T)どうやら24号はそれそうなところが、最後の一撃という感じで(~_~;)そんな台風一過の秋晴れ、今度は新潟で大地震です( °O °;)こないだこちらでも地震がありましたが、今度の地震はものすごいですね〜(x_x)神無月が神に見放された月、というわけではないにせよ…(~_~;)

そんな天災が続く中、あいかわらず三國志製作はデータベースのお勉強で一休み…かと思いきや、前回以来あっさり動いてしまったので、さっそく導入開始の運びになりました(^O^)これまで英語、というよりsikinとかsiroとかのアルファベットだった変数への代入が、ちゃんと資金とか城とかの漢字を使うことができるようになりました(^O^)けれども、実はそういった漢字を使うやり方でなく、従来通りのアルファベットでの指定の方がプログラムとしての動作は早いようです(--;まあそりゃあそうですわなあ…

とはいえ、漢字で代入指定できると何をやっているのかよくわかります(^O^)見やすいと間違いも発見しやすいのです(^^;;前回行っていた、初期設定のデータ変換だけアルファベット指定にしようかしら…?それにしても、とりあえず昔苦労して作った三國志人名ユニコードデータを移し移しして……入った!(^O^)いやあ、とりあえず千人強の人名が表示されました\(^O^)/これまで10人くらいのテストデータだったので、さすがに一気に千人をリスト表示させると時間かかりますね(^^;;まあ、そんなことは滅多に生じないですから大丈夫でしょう(^^;

うまくいくようなので、一気に移植手術です。当初は従来型変数を検索してデータベース処理に変えていこうと考えていました。Delphiは現在のプログラム全体を横断して検索できるのです。これを使ってちょっとずつ変えていこうと思いましたが……量が多い(~_~;)

作り直しに伴ってついこないだ新たに書き始めたところとはいえ、さすがにシミュレーションゲームはデータ操作が命、そこいら中に変数が書かれていました(x_x)直しても直してもきりがない位ありそうです。ちょっとずつ探しては直すのもだんだん面倒になります…

もともと、書いては動かしては試し、書いては動かしては試しをしていました。ところがちょっとずつ探しては直して動かしては試し…としていったとしても、もともとの変数設定で動いているのか、新しいデータベース処理がちゃんと動いているのかわからなくなる可能性があります。旧来の設定が生き残っていると、ちゃんと動いているからとそのままにしておくことで、将来的にその旧来の設定のために思った通りの正常に動かなくなる可能性はあります。

ここで相変わらず過激なわたくしとしては(^^;;;一気にデータベースを移植してみようと思いました。Delphiは、型宣言に非常に敏感な言語です。使う変数は事前に宣言しておかねばなりません。busyo変数を使うなら、最初にbusyo変数を使う、と宣言するのです。そうしないとエラーになります。ということは、この宣言を切っちゃって、動かしてエラーになればそこが問題の点なのです(^^;;初期設定のデータベース導入があっさりうまくいった私はやや自信を持っています( ̄^ ̄)

ということで、いきなり消してしまいました(^^;;手術するのに麻酔をかけたというべきか、手術するのにいきなり息の根を止めたというべきか…(^^;;;これでテストしようにも、まともに動かなくなります。動かなくなったエラー元に、原因の旧来変数があります。そこを直すのです(◎-◎)

それにしても、やっぱり変数処理とデータベース処理とでは発想がやや違います。プログラム量が多少伸びたりしますが、まあ、大量のデータ処理ならこちらの方が早い…はずです(^^;;;だいたい旧来の設定で大量のデータを操作していないのでなんともいえません(^^;;;

さてさて、動かしては書き換え、動かしては書き換えしていると、部分的に動くものの全体としてちゃんと動くのかどうかだんだん不安になります(~_~;)ところがもはや全部変えない限りちゃんと動くかどうかはわかりません。微妙な不安を押し殺し、変更手術を続けていきます……出るわ出るわ…(--;)

とはいえ、Delphiのとるオブジェクト指向言語のいい面が発揮されています(^o^)オブジェクト指向はこれまで何度かお話したように、プログラムの動作すべき部分を部品として考えます。小部品の集まりが全体としてプログラムとなるのです。そのため、基本的に部品の中で処理が完結しているので、その部品の中を直せば、少なくともその部品は動くのです。ある部分が壊れたからといって、必ずしも全部が全部動かなくなる、というわけではないのです。とはいえ、Delphiの厳密な型チェックのため、宣言されていない変数エラーは逃れられません(^^;そもそも動かないんですよねえ〜(~_~;)

ひたすら修正し続けると、その部品ごとの意味を改めて考え、何をしているのかわからないと、修正もできないことに気づきます。それにしても、動く部品についてはその後はほとんど何も考えてないということがよくわかりました(^^;なんだったけこれ?という部品がいっぱいでてきます(--;とはいえ、よ〜く見ると、ああ、あれだあれだ、と思い出します(^o^)オブジェクト指向的になっていたせいか、長大な部品を作らなくしていたため、だいたい部品の長さは1画面に収まるので我ながらわかりやすいのです。たまに長い部品に出会うと、分割してやりたくなりますね(^^;;

で、実際に分割したりして、細かい部品だらけにしてみたり、処理の方法を変えたり。いよいよ全部治るときがやってきました(~_~;)

ちゃんと動きます…(^^;;千人分の長大なリストができますが、設定変更で元の数人に戻しました(^-^)大量の武将は実際のところテストには邪魔ですね(~_~;)必要な連中だけ各設定を付けなおします。そしてこれまで作ってきたコマンドなどを試してみます……ん?エラー??( ̄□ ̄;)

途中まではちゃんと動きます。データの処理をそのまま変えただけだから当然といえば当然です。…しかし…??エラーの内容は、データベースが編集モードになっていない、ということなのです。これはどうしたことでしょう!( °O °;)編集モード??

エラーが表示された場所は変数に値を代入する部分です。6つ程の項目があり、4番目辺りの代入でエラーが出ます。なぜ!!??どれも同じ内容で、ただ項目が違うだけなのです。1番目や3番目などはちゃんと代入されています。それなのに4番目でエラーが出るなんて…?これをとりあえず消してみると、5番目も6番目もエラーが出ます。ううむう…?もしかして…?

もしかして!このデータベースはデータを編集することができないのでは…?( °O °;)と、そんなことはないはずです(^^;だいたい最初にデータ変換するところでデータを代入しています。ところが、ある項目ではちゃんと代入でき、ある項目ではできません。のみならず、テストのための代入文をつくって試してみると、のきなみうまくいきません…!ううむ〜(T-T)

あれこれ試し、設定をいじくり、ヘルプを見、マニュアルを繰り、またあれこれ試し……ひたすら試しました。もう疲れました(ToT)まさに、手術はうまくいったものの麻酔がきれないというか、手術はうまくいったものの最初からすでに息の根が止められていたというべきか…(--;)いずれにせよ、そんな手術は失敗です。いったいなぜ動かないのだ〜〜(TOT;)

それにしても、ひたすらマニュアルを確認しても、編集モードになっていないというエラーは解せません。読込専用プロパティでないことなど、マニュアル上の編集可能条件はちゃんとみたしています。しかもちゃんと編集されている部分もあるのです。何が原因なんでしょう?私の知らないデータベースの極意があったのでしょうか?(~_~;)

ということで、現在右往左往の回復作業中です(T-T)はたして原因はなんだったのか??次週その正体が明らかに!…なればいいんですが…(T-T)

index

〔TopPage〕

このページへのリンクはフリーです。
このページについてのご意見、ご質問などは、kr_ryo_green@yahoo.co.jpまでお願いします。
Copyright 2004© kr_ryo All rights reserved.
訪問件数