FileAge与“c:\ pagefile.sys”不兼容

问题描述:

有人知道为什么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

试试这个:

型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

调用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

请注意,FileAge已被弃用。

TFile.GetLastAccessTime(FileName) 

可能是一个替代...

+2

不推荐使用带有2个参数的FileAge版本。我在互联网上找到了相关信息。 – Ampere 2010-09-29 21:28:23