Delphi XE3手表创建了一个类的新实例

时间:2013-07-05 15:20:15

标签: delphi delphi-xe3

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

出于调试目的,我想在运行时看到如果为TDateTime变量分配了一些值,它将具有什么值。例如,拥有var date : TDateTime

date := 0

所以,如果有可能为此目的使用手表窗口,我就会徘徊。我尝试了类似TDateTime.Create(0)TDateTime := 0的内容,但都将错误消息作为输出。

有没有办法用手表做我需要的东西?

提前致谢。

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

1 个答案:

答案 0 :(得分:3)

手表仅适用于观看现有变量; AFAICT,您无法在运行时创建要添加到监视窗口的新变量。

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

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

如果您只想在调试时使用变量,而不是在发布代码中,则可以使用{$IFDEF DEBUG}(自动在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;