type TTimeOfWhat = ( ftCreationTime, ftLastAccessTime, ftLastWriteTime );
function TForm1.GetFileTime( const FileName : String; ComparisonType : TTimeOfWhat ): TDateTime; var SystemTime : TSystemTime; FileTime : TFileTime; begin // Result := StrToDate( '12/31/9999' );
FileTime := myGetFileTime( FileName, ComparisonType ); if FileTimeToSystemTime( FileTime, SystemTime ) then // Convert to TDateTime and return Result := SystemTimeToDateTime( SystemTime ); end;
function TForm1.myGetFileTime( const FileName : String; ComparisonType : TTimeOfWhat ) : TFileTime; var FileTime, LocalFileTime : TFileTime; hFile : THandle; begin // initialize TFileTime record in case of error Result.dwLowDateTime := 0; Result.dwHighDateTime := 0; hFile := FileOpen( FileName, fmShareDenyNone ); try if hFile <> 0 then begin case ComparisonType of ftCreationTime : Windows.GetFileTime( hFile, @FileTime, nil, nil ); ftLastAccessTime : Windows.GetFileTime( hFile, nil, @FileTime, nil ); ftLastWriteTime : Windows.GetFileTime( hFile, nil, nil, @FileTime ); end; // case FileTimeOf
// Change the file time to local time FileTimeToLocalFileTime( FileTime, LocalFileTime ); Result := LocalFileTime; end; // if hFile <> 0 finally FileClose( hFile ); end; // try end;