如何在Delphi中获取编译日期和时间

时间:2009-11-23 06:35:50

标签: delphi compilation

我希望能够在Delphi 2009程序中显示程序编译的日期和时间。

有一种简单的方法吗?

4 个答案:

答案 0 :(得分:11)

至少从Delphi 2007开始,应该编写PE Header中的链接器时间戳。 (在Delphi 5这样的旧版本中,PE头中的时间戳是1992年的,而真正的时间戳只能在资源中找到)

如果您已使用JCL,请尝试从JclPEImage.pas获取PeReadLinkerTimeStamp SVN View

答案 1 :(得分:6)

显而易见的选择可能是使用exe的最后修改日期,但这可以更改。

您可以在版本信息中包含编译时间戳并读取该资源。我似乎记得一个IDE加载项为你做这个,但不是哪一个。

或者您可以阅读timestamp from the PE header

答案 2 :(得分:5)

我也使用PE头时间戳。它的问题是(至少在旧版本中)Delphi没有正确更新它。我不确定这是否已在Delphi 2010中修复。我编写了一个IDE插件,用于在每次编译后自动更新PE头。您可以从CodeCentral获取它:19823 Update PE header TimeDateStamp value after compilation

答案 3 :(得分:2)

我使用一个简单的IDE加载项,我编写该加载项以遍历项目中的所有源文件,并编写包含最新修改时间的.INC文件。这是作为'编译前'动作自动完成的。我发现它比简单的“最后编译”日期更有用,因为它更准确地反映了项目上次更改的时间。由于我们的应用程序中的所有项目都在FinalBuilder中针对每个构建进行编译,因此“最后编译”时间会产生大量类似的时间戳,这表示不太感兴趣。唯一的缺点是这种机制不记录对我们的实用函数库的更改,这些函数不是任何项目的一部分;但他们不经常改变。但是,如果您确实只需要编译日期,则类似的IDE加载项可以改为执行此操作。