我一直在谷歌搜索HOURS(和这里).
我找不到解决方案.
我想在DELPHI 6中更改“Created Filetime”(=创建文件时间).
不是“修改文件时间”(需要简单调用“FileSetDate()”)
而不是“上次访问的文件时间”.
我该怎么做呢?
解决方法
调用
SetFileTime
Windows API函数.如果您只想修改创建时间,则为lpLastAccesstime和lpLastWriteTime传递nil.
您需要通过调用CreateFile
或其中一个Delphi包装器来获取文件句柄,因此这不是最方便的API.
通过将API调用包装在一个接收文件名和TDateTime的辅助函数中,让自己的生活更轻松.此函数应管理获取和关闭文件句柄的低级细节,并将TDateTime转换为FILETIME.
我会这样做:
const FILE_WRITE_ATTRIBUTES = $0100; procedure SetFileCreationTime(const FileName: string; const DateTime: TDateTime); var Handle: THandle; SystemTime: TSystemTime; FileTime: TFileTime; begin Handle := CreateFile(PChar(FileName),FILE_WRITE_ATTRIBUTES,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_norMAL,0); if Handle=INVALID_HANDLE_VALUE then RaiseLastOSError; try DateTimetoSystemTime(DateTime,SystemTime); if not SystemTimetoFileTime(SystemTime,FileTime) then RaiseLastOSError; if not SetFileTime(Handle,@FileTime,nil) then RaiseLastOSError; finally CloseHandle(Handle); end; end;
我不得不添加FILE_WRITE_ATTRIBUTES的声明,因为它在Delphi 6 Windows单元中不存在.
原文地址:https://www.jb51.cc/delphi/102364.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。