2010-09-29 150 views
2

有人知道爲什麼FileAge不能使用「c:\ pagefile.sys」? 它返回-1。FileAge與「c: pagefile.sys」不兼容

更新:
發現:這是一個Delphi程序錯誤修正,2010年德爾福(QC Entry 73539),但the PDF我發現沒有解釋他們是如何解決它。

有誰知道他們是如何修復它,所以我可以修復我的德爾福7?

更新: 由Radu Barbu提供的優雅修復!


Delphi 7中,Win 7的(32個比特)

+0

請參閱下面的更新到我的答案。 – 2010-09-29 19:41:07

+1

您能否修復PDF鏈接以包含* full * URL? – 2010-09-29 20:56:37

+0

QC報告包含解決方法的代碼。這不適合你嗎? – 2010-09-29 20:59:11

回答

3

試試這個:

型TSearchRec的變量(WSR波紋管)負荷的pagefile.sys然後

wSR.FindData.ftLastWriteTime - 應該返回時,文件訪問

並與功能bellow你應該得到的時間

function FileTime2DateTime(FileTime: TFileTime): TDateTime; 
var 
    LocalFileTime  : TFileTime; 
    SystemTime  : TSystemTime; 
begin 
    Result := 0; 
    try 
    FileTimeToLocalFileTime(FileTime, LocalFileTime); 
    FileTimeToSystemTime(LocalFileTime, SystemTime); 
    Result := SystemTimeToDateTime(SystemTime); 
    except on e: Exception do 
//some message if you want 
    end; 
end; 

最好的問候,

+0

哇。有效。你應該聯繫Embarcadero,讓他們知道有一個比他們使用的解決方案更輕的解決方案。 – Ampere 2010-10-05 13:59:15

+0

很高興我能幫上忙。 – RBA 2010-10-06 06:21:49

0

調用GetLastError()來獲得由用FindFirstFile()API函數(由FileAge調用)返回的錯誤碼。

更新:德爾福2010年修復回落到FindFirstFile所以最有可能它不會幫助你。他們調用GetFileAttributesEx,如果失敗,他們調用FindFirstFile。並且GetFileAttributesEx應該爲pagefile.sys失敗。所以你確實需要檢查錯誤代碼。

+0

爲什麼GetFileAttributesEx *應該*爲pagefile.sys失敗?這是記錄在哪裏? – 2010-09-29 20:54:14

+0

@Rob肯尼迪它不應該,它只是失敗。在Google上查看關於此的報告。 – 2010-09-30 07:15:38

2

請注意,FileAge已被棄用。

TFile.GetLastAccessTime(FileName) 

可能是一個替代...

+2

不推薦使用帶有2個參數的FileAge版本。我在互聯網上找到了相關信息。 – Ampere 2010-09-29 21:28:23