Как определить время последнего доступа к файлу?
Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
SearchRec: TSearchRec;
Success: integer;
DT: TFileTime;
ST: TSystemTime;
begin
Success := SysUtils.FindFirst( 'C:\autoexec.bat', faAnyFile, SearchRec );
if ( Success = 0 ) and
( ( SearchRec.FindData.ftLastAccessTime.dwLowDateTime <> 0 ) or
( SearchRec.FindData.ftLastAccessTime.dwHighDateTime <> 0 ) )
then
begin
FileTimeToLocalFileTime( SearchRec.FindData.ftLastAccessTime, DT );
FileTimeToSystemTime( DT, ST );
Memo1.Lines.Clear;
Memo1.Lines.Add( 'AutoExec.Bat последний раз был изменен:' );
Memo1.Lines.Add( 'Year - ' + IntToStr( st.wYear ) ); Memo1.Lines.Add( 'Month - ' + IntToStr( st.wMonth ) );
Memo1.Lines.Add( 'DayOfWeek - ' + IntToStr( st.wDayOfWeek ) );
Memo1.Lines.Add( 'Day - ' + IntToStr( st.wDay ) );
Memo1.Lines.Add( 'Hour - ' + IntToStr( st.wHour ) );
Memo1.Lines.Add( 'Minute - ' + IntToStr( st.wMinute ) );
Memo1.Lines.Add( 'Second - ' + IntToStr( st.wSecond ) );
Memo1.Lines.Add( 'Milliseconds - ' + IntToStr( st.wMilliseconds ) );
end;
SysUtils.FindClose( SearchRec );
end;
|
Способ второй
function GetFileDate( FileName: string ): string;
var
FHandle: Integer;
begin
FHandle := FileOpen( FileName, 0 );
try
Result := DateTimeToStr(FileDateToDateTime(FileGetDate(FHandle)));
finally
FileClose( FHandle );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( GetFileDate( 'c:\autoexec.bat' ) );
end;
|
Способ третий
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(DateTimeToStr(FileDateToDateTime(FileAge('c:\autoexec.bat'))));
end; |