【发布时间】:2013-02-20 16:33:29
【问题描述】:
似乎没有办法将 NULL(“未分配值”分配给TDateTime 变量。
我想象的唯一方法是使用这样的东西:
function isNull(aDate : TDateTime) : boolean;
const NullDate = 0.0;
var aNullDate : TDatetime;
ms : Int64;
begin
aNullDate := NullDate;
ms := MilliSecondsBetween(aDate,aNullDate);
result := (ms = Int64(0));
end;
有没有人知道更好的解决方案什么不与 0 日期值重叠?
负的TDateTime 值是危险的吗? (作为以前用途的有能力的资源)
【问题讨论】:
-
如果你打算使用这个函数,我想,
NullDate应该是一个全局常量吗? -
在将赋值为零的 TDateTime 变量与 const 值 0 进行比较时遇到了问题。一个 simple if 因为这个没有检查条件 `var v_datetime: TDatetime;` ` v_datetime := 0;` ` if (v_datetime = 0) then actionToTake`
-
那是因为浮点模糊。使用
Math.IsZero。 -
0 是一个完全有效的日期,负日期也很好。 0 是 1899 年 12 月 30 日的午夜。负数是在那之前的日期。
标签: delphi datetime null unassigned-variable