我想知道,我如何才能得到一个文件夹的创建日期为TDateTime?FileAge()不能处理文件夹,只能处理文件,所以很遗憾datetime := FileDateToDateTime(FileAge())不适合我。任何帮助都将不胜感激,因为我在这里有点为难。
TDateTime
FileAge()
datetime := FileDateToDateTime(FileAge())
qpgpyjmq1#
简单地使用TDirectory.GetCreationTime。
TDirectory.GetCreationTime
7vux5j2d2#
您正在调用的FileAge()版本已被弃用(编译器应该会警告您)。您应该使用具有TDateTime输出参数的较新重载:
function FileAge(const FileName: string; out FileDateTime: TDateTime; FollowLink: Boolean = True): Boolean;
例如:
if FileAge(path, datetime) then begin // use datetime ... end;
在任何情况下,两个版本的FileAge()都在内部使用Win32 GetFileAttributesEx()和/或FindFirstFile() API,它们都可以很好地处理文件夹,只是FileAge()过滤输出以忽略文件夹。因此,直接使用Win32 API即可。或者,您可以使用RTL的FileGetDateTimeInfo()函数:
GetFileAttributesEx()
FindFirstFile()
FileGetDateTimeInfo()
function FileGetDateTimeInfo(const FileName: string; out DateTime: TDateTimeInfoRec; FollowLink: Boolean = True): Boolean;
TDateTimeInfoRec具有TDateTime类型的CreationTime属性。例如:
TDateTimeInfoRec
CreationTime
var info: TDateTimeInfoRec; if FileGetDateTimeInfo(path, info) then begin datetime := info.CreationTime; // use datetime ... end;
2条答案
按热度按时间qpgpyjmq1#
简单地使用
TDirectory.GetCreationTime
。7vux5j2d2#
您正在调用的
FileAge()
版本已被弃用(编译器应该会警告您)。您应该使用具有TDateTime
输出参数的较新重载:例如:
在任何情况下,两个版本的
FileAge()
都在内部使用Win32GetFileAttributesEx()
和/或FindFirstFile()
API,它们都可以很好地处理文件夹,只是FileAge()
过滤输出以忽略文件夹。因此,直接使用Win32 API即可。或者,您可以使用RTL的
FileGetDateTimeInfo()
函数:TDateTimeInfoRec
具有TDateTime
类型的CreationTime
属性。例如: