【发布时间】:2012-02-13 03:46:06
【问题描述】:
我们这里有点问题。我们已经从 Delphi 2006 升级到 Delphi XE2,并且正在转换我们的代码。
问题是,我们通过我们的应用程序和数据库记录使用值 -693594 来表示无日期(零日期)。在 Delphi 2006 中,FormatDateTime 函数会正确地将其格式化为 00/00/0000(假设日期格式为 dd/mm/yyyy)。
但是在 Delphi XE2 中,他们在 System.SysUtils 的 DateTImeToTimeStamp 函数中添加了对 ValidateTimeStampDate 的调用,这会引发错误“无效的浮点运算”。传递大于 -693594 的任何值,例如 -693593,都可以正常工作。
还有其他人遇到过这个问题和/或有人知道解决方法吗?
【问题讨论】:
-
我可能错了,但不是说“通过任何小于 -693594 的东西”?此外,这在 XE 中有效,如何将 d2006 函数复制粘贴到项目“utils”中并始终将其添加为“uses”子句中的最后一个单元,这样编译器将使用 THAT 而不是默认的。
-
编写自己的函数来包装 rtl 函数并检测该包装器中的标记值
-
@大卫赫弗南:+1!没有勺子喂的代码
-
嗨,大卫。这听起来像一个好主意。但是我该怎么做呢?抱歉,我在这方面没有经验。
-
抱歉,david,我以为您的意思是以某种方式挂钩 rtl 函数并从检测和处理该值的包装函数中调用它。我们已经编写了一个我们正在使用的替代函数,但 FormatDateTime 也在整个 VCL 中使用,所以我担心当将 -693594 传递给 VCL 控件时,这个问题会发生在 VCL 控件中。有没有办法拦截 FormatDateTime 并提供替代方案?或者如何修改 FormatDateTime 并重建 RTL?
标签: delphi delphi-xe2 delphi-2006 formatdatetime