- ベストアンサー
Delphiでタイマー関数を使って変数をカウントする方法
- Delphiでタイマー関数を使って変数をカウントする方法について説明します。
- カウントする変数の初期値を入れる方法や、カウントの方法についても解説します。
- グローバル変数や外部から変数を持ち込む方法についても触れます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
このプログラムで利用されている,Count変数は初期化されていないので まずいですね。 Timer関数内にはいったときにCount変数が確保されるのですが 初期化されていないので、それに+1してもどんな値になるか確証がありません。仮に初期化されていたとしても、この値+1にしかならず意味がありませんね。 C/C++の場合、 static int Count = 0; と宣言すればよいのですが、Delphiにはこのような機能はないようです。 グローバル変数かクラスメンバ変数として確保しておいて、ソフト起動時(コンストラクタの呼び出し時)に初期化するのが一般的ではないでしょうか。 Labelのキャプションを呼び出して...というのは、あまりおすすめできませんね。 あとは、Timer1のプロパティのtagに初期情報をいれておいて、内部から参照するというのもありかもしれません。 デザイン時にTimer1.tagを0にしておいて、 Timer1Timer関数内で Timer1.tag := Timer1.tag + 1 ってしていけばよいのではないかな。
その他の回答 (1)
- techa
- ベストアンサー率60% (41/68)
> キャプションを使っては行けない理由ってありますか? いけないとはいいませんが、 AnsiString型 <=> 数値型 という変換が頻繁におこるのと、実数を扱うようになると 誤差もでてくるので、得策ではないとおもいます。 (実数をつかうならTagはつかえなくなりますが) それに画面表示を参照するとなると、全体の動きが見えにくくなり 結局、いらないバグが入り込む余地がうまれてしまいますし。 それくらいの意味しかないとおもいますが。
お礼
アホな子のアホな追加質問でした。 確かに、キャプションだと、いろいろと細かな面倒が増えました。 ちょっとした計算でも、delphiは型の変換をして、さらに変換して、戻すことが多いので、簡単な方がいいに決まっています。 また、今回はキャプション自体を表示して、利用するので、キャプション自体は無駄ではないのですが、そこまでの情報は出していなく、一般論からすると、変なキャプションは出さない方が、簡単って事です。 tagの方が簡単ですね。^^; ありがとうございます。
お礼
グローバル変数は、極力使いたくないので、クラスメンバ変数ですかー。 私もあれから、時間を見つけて調べました所、delphiでは、static int Count = 0;は無理みたいですね。 Tagプロパティーは、「開発者の便宜を図るために用意されています」と書かれていたので、使ってみたいと思います。 ところで、 キャプションを使っては行けない理由ってありますか? まぁ、スマートではないのは分かります。 不可視にしちゃえば、さほど問題もない気もしますし。 処理速度の問題かな?とりあえず、1000回ループでもして実験したいと思います。 本当にありがとうございます。