//==============================================================================
//修改文件‘创建’、‘修改’日期时间********************************************
//==============================================================================
function SetFileDateTime(FileName: string; TargetTime: TDateTime): string;
var FileHandle: HFile;
    SystemTime: TSystemTime;
    FileTime: TFileTime;
begin
  DateTimeToSystemTime(TargetTime, SystemTime);
  SystemTimeToFileTime(SystemTime, FileTime);
  LocalFileTimeToFileTime(FileTime, FileTime);//将本地时间转化为系统的时间,再写入文件中
  FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);//fmOpenWrite就带有GENERIC_WRITE的意思
  if FileHandle<=0
  then Result := 'Open File Error!!!'
  else if not SetFileTime(FileHandle, @FileTime, @FileTime, @FileTime)
       then Result := 'Set File Time Error!!!'
       else Result := 'Set File Time Successfully!!!';
  FileClose(FileHandle);
end;

解决方案 »

  1.   

    首部  function FileSetDate(const FileName: string; Age: Integer): Integer; overload; $[SysUtils.pas
    首部  function FileSetDate(Handle: Integer; Age: Integer): Integer; overload; platform; $[SysUtils.pas
    功能  返回设置文件的修改时间
    说明  修改成功则返回0
    参考  function Windows.SetFileTime
    例子  SpinEdit1.Value := FileSetDate(Edit1.Text, DateTimeToFileDate(StrToDateTime(Edit2.Text)));
      

  2.   

    //from
    http://kingron.myetang.com
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      vSearchRec: TSearchRec;
      LocalFileTime: TFileTime;
      I: Integer;
    begin
      if FindFirst('autoexec.bat', faAnyFile, vSearchRec) = 0 then  FileTimeToLocalFileTime(vSearchRec.FindData.ftCreationTime, LocalFileTime);
      FileTimeToDosDateTime(LocalFileTime, LongRec(I).Hi, LongRec(I).Lo);
      Memo1.Lines.Values['创建时间'] := DateTimeToStr(FileDateToDateTime(I));  FileTimeToLocalFileTime(vSearchRec.FindData.ftLastAccessTime, LocalFileTime);
      FileTimeToDosDateTime(LocalFileTime, LongRec(I).Hi, LongRec(I).Lo);
      Memo1.Lines.Values['访问时间'] := DateTimeToStr(FileDateToDateTime(I));  FileTimeToLocalFileTime(vSearchRec.FindData.ftLastWriteTime, LocalFileTime);
      FileTimeToDosDateTime(LocalFileTime, LongRec(I).Hi, LongRec(I).Lo);
      Memo1.Lines.Values['修改时间'] := DateTimeToStr(FileDateToDateTime(I));
      FindClose(vSearchRec);
    end;