我已经花了很多时间研究这个并且非常卡住:我的问题是 - Delphi TDateTime 的内部格式在 Delphi 7(2002 年左右发布)和今天之间是否发生了变化?
场景:我正在读取一个由 Delphi 7 应用程序创建的二进制日志文件,供应商告诉我它是记录中的 TDateTime,但解码这些位表明它显然不是标准的 IEEE 754 浮点,即使现代 Delphi 生成的 TDateTime 是.
但它是某种浮点数,大约有 15 位指数和 45 位有效数字(与 IEE754 中的 11 和 53 位相反),并且前导位是 1(在 IEE754 中表示负数)显然不是负面的,例如当前日期/时间。
旧文档中的提示表明 TDateTime “读取为”双精度,但不一定在内部表示为一,这意味着内部格式几乎不可见,除非这些 TDateTime 以二进制形式写出。
我怀疑是 Delphi 8 发生了变化,它添加了 .NET 支持,但我根本无法在任何地方找到对此的任何引用。我有 perl 代码 (!) 可以区分这些主要工作的类型,但我很想找到一个正式的规范,这样我就可以正确地做到这一点。
有没有遇到过这种情况的老手?
~~~ 史蒂夫