1

Delphi は初めてで、Rad Studio XE3 を使用しています。

TDateTimeデバッグの目的で、実行時に、値が割り当てられた場合に変数を持つ値を確認したいと思います。たとえば、次のようになりvar date : TDateTimeます。

date := 0

それで、その目的でウォッチウィンドウを使用できるかどうかをさまよっていました。TDateTime.Create(0)またはのようなものを試しましTDateTime := 0たが、どちらも出力としてエラーメッセージを出します。

時計で必要なことを行う方法はありますか?

前もって感謝します。

アップデート 1 0 As TDateTimeも機能しません。

4

1 に答える 1

3

監視は、既存の変数を監視するためにのみ機能します。AFAICT、実行時にウォッチ ウィンドウに追加する新しい変数を作成することはできません。

(また、TDateTime他の人があなたの質問へのコメントで指摘しているように、Delphiのオブジェクトではありません。double値の整数部分に日付をエンコードし、小数(10進数)部分に時間をエンコードするだけです。TDateTimeインスタンスを作成できません。)

「DateToStr(0)」のような式を評価するには、評価/変更ウィンドウ (デバッガーがブレークポイントにあるときに、View->Debug Windows->Evaluate/Modifyまたは右クリック メニュー、Run->Evaluate/Modify、またはを使用して使用できます) を使用できます。Ctrl+F7変数を監視する唯一の方法は、実際にコードで変数を宣言 (および使用) してから、その変数に監視を設定することです。コンパイラは未使用の変数を最適化するため、単に宣言するだけでは十分ではありません。また、評価している関数は、コード自体のどこかで実際に使用する必要があります。そうしないと、使用できなくなります。(リンカーは、ほとんどの場合実際には呼び出されない関数を実行可能ファイルに含めません。)

デバッグ時にのみ変数を使用可能にしたいが、リリース コードでは使用できないようにする場合は、それを{$IFDEF DEBUG}(デバッグ ビルド構成で自動的に事前定義されている) で囲むことができます。

procedure TForm1.FormCreate(Sender: TObject);
{$IFDEF DEBUG}
var
  CurrDate: TDateTime;
{$ENDIF}
begin
  {$IFDEF DEBUG}
  CurrDate := Date;
  // Use CurrDate so the compiler doesn't eliminate it.
  {$ENDIF}
  // Your other code here as usual
end;
于 2013-07-05T21:57:54.193 に答える