• 締切済み

Delphiの変数の使い回し。

初心者が言い訳にならない事は分かっていますが、教えてください。 書籍を1冊買ったのですが、あまりピンとこなくて。 Button1Clickでテキストボックスの値と今の時間を足した結果を表示させています。 これはクリックするたびに、その作業が行われるのですが、この値の一番最初の値をキープしたまま、別の所で使いたいのですが、方法が分かりません。 if文で変数の中身があったら、古いデータのまま、とかもできるとは思うのですが、HPや書籍には関数や変数の説明はしてあったのですが、こういった実践的な説明が載っているHPがみつからなくって。 よろしくお願いします。

みんなの回答

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.3

publicでBoolean、TDateTimeの2つの値を保持。Booleanはコンストラクタでfalseに初期化しておき、代入時にtrueへ。TDateTimeはfalseの時だけ代入する。 とやれば、form1(デフォルトなら)を参照出来る位置で古い値を保持出来ます。 更に別の方法。上記変数をprivateに変え、privateでTDateTime型のsetメソッドとgetメソッドを用意し、publicなTDateTime型プロパティを定義します。 getメソッド内で上記の「falseならtrueにした上で代入」と定義し、setメソッドはそのまま返せば、最初の値だけ代入可能で、後は参照だけできるプロパティができます。 プロパティのメリットは「Booleanで代入の可否を判定する」というロジックが外部から見えない事です。さらに代入部分が1カ所になるので修正も楽です。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

イベントの外にフォーム変数とかで変数を作っておきます。 初期値(初期化)でマイナス(とかNULL)にしておいて if で値を調べて、マイナスだったら値をクリックしたタイミングで値を設定してそうでなかったら設定しません。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

今Delphi を使っていないので、見当違いだったらすみません。 時間のデータということなので、マイナスは無いと考えられるのであれば、 初期値としてマイナス(未設定の意味)を設定しておくとか、 あるいは、そういう、時間を直接扱うような変数ではなくて、 文字列形式で保存するようにしておけば、 未設定の場合"" を設定するとか方法は色々あると思います。

noname#16046
質問者

補足

初期値をマイナスにしても、クリックするたびに、Now(と加工)により現在の時間+αが変数に入ります。 クリックするたびに、中の変数は変えたくないのです。 一番最初にクリックしたのが、例えばNowにより変数の値が06/03/12 09:32:50だったとしたら、次ぎにクリックした時は、06/03/12 09:33:15に変わってしまいます。 イベント駆動型のプログラムなので、特殊な変数化させる事、もしくは単純な仕組みで、値を変わらないようにできる仕組みがあるのかな?と素人は思ったのです。 あ、FormCreateの際に値をキープすれば、イベントに巻き込まれない形になるのか。 それと定数の値を変数にしたりできるのかな?

すると、全ての回答が全文表示されます。

関連するQ&A