如何检查TDateTime内容是否有效

Sta*_*ate 2 delphi validation datetime vcl tdatetime

有没有办法检查Delphi TDateTime变量是否具有有效内容而不捕获转换上的异常?

我编写了一个应用程序,必须解析数百个包含TDateTime字段的原始Delphi记录的大文件.偶尔我会得到一条记录,其内容的TDateTime值如2.0927117954e + 262,它Floating point invalid Operation在传递给转换例程时会产生异常.我知道我可以简单地捕获异常,但这在调试时会非常麻烦,因为调试器会一直停止,我想在其他错误的情况下保持启用状态.

Ser*_*yuz 11

您的示例值显然超出了有效的DateTime范围.您可以在执行任何转换之前测试它是否在范围内.

var
  d: TDateTime;
..

d := 2.0927117954e+262;
if (d <= MaxDateTime) and (d >= MinDateTime) then
  s := DateTimeToStr(d)
else
  ..
Run Code Online (Sandbox Code Playgroud)


Jan*_*gen 5

如果您的问题是调试器停止,您可以在以后的Delphi版本的IDE中修复它.在发生异常的行之前和之后设置两个断点.例如,在Delphi 2007中,右键单击第一个BP的边距红点,选择BreakPoint属性/高级/忽略后续异常.在第二个BP上,"处理后续异常"