Gọi SetFileTime
của Windows hàm API. Vượt qua nil
cho lpLastAccessTime
và lpLastWriteTime
nếu bạn chỉ muốn sửa đổi thời gian tạo.
Bạn sẽ cần lấy một tệp xử lý bằng cách gọi CreateFile
hoặc một trong các trình bao bọc Delphi, vì vậy đây không phải là API thuận tiện nhất để sử dụng.
Làm cho cuộc sống dễ dàng hơn cho chính bạn bằng cách gói API gọi lên trong hàm trợ giúp nhận tên tệp và TDateTime
. Hàm này sẽ quản lý các chi tiết cấp thấp về việc thu thập và đóng trình xử lý tệp và chuyển đổi TDateTime
thành FILETIME
.
tôi sẽ làm điều đó như thế này:
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, nil) then
RaiseLastOSError;
finally
CloseHandle(Handle);
end;
end;
tôi đã có thêm việc kê khai của FILE_WRITE_ATTRIBUTES
bởi vì nó không có mặt trong đơn vị Delphi 6 Windows.
Nguồn
2011-12-09 13:44:10
Cảm ơn bạn rất nhiều !!!! – user1089764