gpt4 book ai didi

delphi - 新的 Delphi XE2 自动生成的内部版本号是否链接到 1.1.2000 00 :00:00?

转载 作者:行者123 更新时间:2023-12-03 15:09:33 36 4
gpt4 key购买 nike

在 Delphi XE2 中,自动生成的内部版本号功能现在使用某种日期和时间生成值,如下所示:

2.4.4386.838

最后两个数字在每次构建时都会发生变化,并且基于当前日期和时间:

Major = 2 (user defined)
Minor = 4 (user defined)
Release = 4386 (number of days since Jan 1 2000)
Build = 838 (number of seconds since 00:00:00)

我猜这个发布和内部版本号的新格式是从 .NET 实现借用的,它的功能非常相似。在 .net 中,最后一个数字 (Build) 等于自本地时间午夜以来的秒数除以 2。有关 .net 实现的详细信息,请参阅此链接: Determining Build Date the hard way

如果可以信赖保持这种方式,那么现在我们有一个更好的方法来确定编译时间,而不是

  1. 使用 IDE 插件

  2. 使用 PE header 黑客

问题不是如何返回旧的自动增量版本号功能。

问题XE2 是否真的使用我上面显示的日期和时间,从 2010 年 1 月 1 日开始,并在构建和发布编号中添加天数和秒数?

最佳答案

编码不可能是你想象的那样。版本和编号打包到一个 32 位 DWORD 中。这意味着一天中的所有秒数都只有 16 位可用。一天有 86400 秒,大于 216

相当奇怪的是,Delphi 实现在达到 216 秒(约 18.2 小时)时似乎会回绕。目前,我的时区 (UTC) 为 22:50,但自动生成的版本号为 16753,即大约 4.6 小时。加上回旋和宾果游戏中缺失的 18.2 小时,现在是 22:50。

看来 Visual Studio 的人做对了,因为他们将 00:00 之后的秒数除以 2。因此,Delphi 自动生成的版本号也不会随时间单调增加,不会是唯一的等等。

在我看来,这是一个错误,我已将其提交为 QC#102343 。请注意,该错误是在 XE2 update 3 中引入的。在以前的版本中不存在该错误。另请注意,版本号的处理已从更新 2 更改为更新 3。

关于delphi - 新的 Delphi XE2 自动生成的内部版本号是否链接到 1.1.2000 00 :00:00?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719437/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com