function CovFileDate(Fd :_FileTime): TDateTime; {轉換文件的時間格式} var Tct:_SystemTime; Temp:_FileTime; begin FileTimeToLocalFileTime(Fd, Temp); FileTimeToSystemTime(Temp, Tct); CovFileDate := SystemTimeToDateTime(Tct); end; procedure GetFileTime(const Tf:string); { 獲取文件時間,Tf表示目標文件路徑和名稱 } const Model='yyyy/mm/dd,hh:mm:ss'; { 設定時間格式 } var Tp: TSearchRec; { 申明Tp爲一個查找記錄 } T1, T2, T3: string; begin FindFirst(Tf,faAnyFile,Tp); { 查找目標文件 } T1 := FormatDateTime(Model, CovFileDate(Tp.FindData.ftCreationTime)); { 返回文件的建立時間 } T2 := FormatDateTime(Model, CovFileDate(Tp.FindData.ftLastWriteTime)); { 返回文件的修改時間 } T3 := FormatDateTime(Model, Now); { 返回文件的當前訪問時間 } FindClose(Tp); end; procedure SetFileDateTime(const FilePathName:string; aDate: TDateTime); { 設置文件時間,Tf表示目標文件路徑和名稱 } var Dt1, Dt2: Integer; Fs: TFileStream; Fct, Flt: TFileTime; begin Dt1 := DateTimeToFileDate(aDate); Dt2 := DateTimeToFileDate(aDate); { 轉換用戶輸入在DataTimePicker中的信息 } try FS := TFileStream.Create(FilePathName, fmOpenReadWrite); try if DosDateTimeToFileTime(LongRec(DT1).Hi, LongRec(DT1).Lo, Fct) and LocalFileTimeToFileTime(Fct, Fct) and DosDateTimeToFileTime(LongRec(DT2).Hi, LongRec(DT2).Lo, Flt) and LocalFileTimeToFileTime(Flt, Flt) then SetFileTime(FS.Handle, @Fct, @Flt, @Flt); { 設置文件時間屬性 } finally FS.Free; end; except MessageDlg('日期修改操做失敗!', mtError, [mbOk], 0); { 由於目標文件正在被使用等緣由而致使失敗 } end; end;