[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]
Want to change file date/time stamps (D2) ?
The following should be self-explanatory....
Angus Johnson
ajohnson@rpi.net.au
----------------------------------------------8<----------------------------
-------------------
function GetFileDateTimeModified(const FileName: string;
var yyyy,mm,dd,h,m,s: word):
boolean;
var
dt,tm: word;
DateTime: integer;
begin
result := false;
DateTime := FileAge(FileName);
if DateTime = -1 then exit else result := true;
tm := DateTime and $FFFF; {lower word}
dt := DateTime shr 16; {upper word}
h := tm shr 11;
m := (tm shr 5) and $3F;
s := (tm and $1F) * 2;
dd := dt and $1F;
mm := (dt shr 5) and $F;
yyyy := (dt shr 9)+1980;
end;
function SetFileDateTime(const FileName: string;
var yyyy,mm,dd,h,m,s: word):
boolean;
{sets Created, Modified & LastAccessed file date/times}
var
SrchHdl: THandle;
FileHdl: HFile;
FindData: TWin32FindData;
wDate,wTime: word;
LocalFileTime, NewFileTime: TFileTime;
begin
result := false;
SrchHdl := FindFirstFile(PChar(FileName), FindData);
if SrchHdl <> INVALID_HANDLE_VALUE then begin
Windows.FindClose(SrchHdl);
{if not a directory then ...}
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
wTime := (h shl 11) + (m shl 5) + (m div 2);
wDate := (dd) + (mm shl 5)+ ((yyyy-1980) shl 9);
DosDateTimeToFileTime(wDate,wTime,LocalFileTime);
LocalFileTimeToFileTime(LocalFileTime, NewFileTime);
FileHdl := _lopen(PChar(FileName), OF_WRITE);
if FileHdl <> HFILE_ERROR then begin
if SetFileTime(FileHdl,@NewFileTime,@NewFileTime,@NewFileTime) then
result := true;
_lclose(FileHdl);
end;
end;
end;
end;
[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]