1

我是 Delphi 的新手,我正在使用 Rad Studio XE3。

出于调试目的,我想在运行时查看TDateTime如果为其分配了某个值,则该值将具有一个变量。例如,有var date : TDateTime

date := 0

所以,我在徘徊是否可以为此目的使用手表窗口。我尝试了类似的东西TDateTime.Create(0)or TDateTime := 0,但两者都给出错误消息作为输出。

有没有办法用手表做我需要的事情?

提前致谢。

更新 1 0 As TDateTime也不起作用。

4

1 回答 1

3

手表只能观察现有的变量;AFAICT,您无法在运行时创建新变量以添加到监视窗口。

(另外,TDateTime不是 Delphi 中的对象,正如其他人在对您的问题的评论中所指出的那样。它只是double将日期编码为值的整数部分,并将时间编码为小数(小数)部分,哦,你无法创建TDateTime实例。)

您可以使用评估/修改窗口(当调试器通过View->Debug Windows->Evaluate/Modify或右键单击菜单、Run->Evaluate/Modify或处于断点时可用Ctrl+F7)来评估像“DateToStr(0)”这样的表达式。监视变量的唯一方法是在代码中实际声明(并使用)该变量,然后对该变量设置监视;仅仅声明它是不够的,因为编译器会优化掉未使用的变量。此外,您正在评估的函数必须在代码本身的某个地方实际使用,否则它将不可用。(链接器不包含在大多数情况下实际未调用的可执行文件中的函数。)

如果您只希望该变量在调试时可用,而不是在您的发布代码中,您可以用{$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 回答