2009-11-23 86 views
4

我希望能夠在Delphi 2009程序中顯示程序編譯的日期和時間。如何在Delphi中獲得編譯日期和時間

有沒有簡單的方法來做到這一點?

+0

Duplicate:http://stackoverflow.com/questions/8437300 – Kromster 2017-05-03 07:33:17

+0

@Kromster - 我在2009年問了這個問題。另一個問題在2011年問了。因此,另一個問題是我的副本。 – lkessler 2017-05-03 13:43:07

+0

我也這麼認爲,但另一個問題有更好的答案。所以我發佈了這個評論來引導這個問題的觀衆回答這些問題。我沒有投下closevote。 – Kromster 2017-05-04 06:08:04

回答

5

一個明顯的選擇可能是使用exe的最後修改日期,但這可以更改。

您可以在版本信息中包含編譯時間戳並讀取該資源。我似乎記得一個IDE插件可以爲你做這件事,但不是哪一件。您可以閱讀timestamp from the PE header

4

我也使用PE標頭時間戳。問題在於(至少在舊版本中),Delphi沒有正確更新它。我不確定這是否已在Delphi 2010中修復。我編寫了一個IDE插件,在每次編譯後自動更新PE標頭。你可以從CodeCentral獲得:19823 Update PE header TimeDateStamp value after compilation

9

至少從Delphi 2007開始,應寫入PE標題中的鏈接器時間戳。 (在舊版本一樣德爾福5 PE頭中的時間戳是一件於1992年,真正的時間戳只能在資源中找到)

如果您已經使用了JCL然後從JclPEImage.pas SVN View

嘗試PeReadLinkerTimeStamp
+0

'IMAGE_FILE_HEADER.DateTimeStamp = 0x2A425E19'(6/19/1992 10:22:17 PM)我不知道爲什麼,就是這樣。 – 2011-10-31 19:08:58

2

我使用了一個簡單的IDE加載項,我寫這個加載項來遍歷項目中的所有源文件,並編寫包含最新修改時間的.INC文件。這是作爲「編譯前」操作自動完成的。我發現它比簡單的「最後編譯」日期更有用,因爲它更準確地反映了項目上次更改的時間。而且由於我們應用程序中的所有項目都在FinalBuilder中編譯,因此每次構建時,「最後編譯」時間都會導致大量類似的時間戳,這意味着不太感興趣。唯一的缺點是這種機制不會記錄我們的不屬於任何項目的實用功能庫;但他們並不經常改變。但是,如果您確實只需要編譯日期,則可以使用類似的IDE加載項來完成此操作。