私はこれを研究するのに何時間も費やしましたが、かなり行き詰まっています:私の質問は-Delphi TDateTimeの内部形式はDelphi7(2002年頃にリリースされた)と今日の間で変更されましたか?
シナリオ:Delphi 7アプリによって作成されたバイナリログファイルを読んでいて、ベンダーはそれがレコード内のTDateTimeであると言っていますが、ビットをデコードすると、最新のDelphiによって生成されたTDateTimeが標準のIEEE754浮動小数点ではないことが明らかになります。 。
しかし、これは、約15ビットの指数と45ビットの仮数(IEE754の11ビットと53ビットとは対照的)を持つある種の浮動小数点であり、先頭のビットは1(IEE754では負の数を示します)です。現在の日付/時刻など、明らかにマイナスではありません。
古いドキュメントのヒントは、TDateTimeがdoubleとして「読み取られる」ことを示唆していましたが、必ずしも内部的に1として表されるわけではありませんでした。つまり、これらのTDateTimeがバイナリ形式で書き出された場合を除いて、内部形式はほとんど見えません。
私の疑いは、変更が.NETサポートを追加したDelphi 8で発生したことですが、これへの参照はどこにも見つかりません。私はこれらのタイプを区別するperlコード(!)を持っていますが、それを適切に実行できるように、正式な仕様を見つけたいと思います。
昔の人はこれに遭遇しますか?
~~~スティーブ