Êàê âûÿñíèòü äàòó ïîñëåäíåãî äîñòóïà ê ôàéëó



Íåêèé ïðîãðàììèñò-êîáîëèñò â ïîòå ëèöà òðóäèëñÿ íàä ïðåñëîâóòîé ïðîáëåìîé 2000 ãîäà. Îí ÷èíèë ïðîãðàììû âî ìíîãèõ ôèðìàõ è çàøèáàë ïðèëè÷íûå áàáêè. Íî ïî ìåðå ïðèáëèæåíèÿ ðîêîâîé äàòû åãî âñå áîëüøå îõâàòûâàë óæàñ: ÷òî áóäåò ñî âñåìè ýòèìè ïðîãðàììàìè è ñ íèì ñàìèì? Íàêîíåö îí ðåøèë çàìîðîçèòüñÿ è ïðîñïàòü â àíàáèîçå äî ôåâðàëÿ 2000 ãîäà, à òàì, ãëÿäèøü, âñÿ ñâèñòîïëÿñêà è óëÿæåòñÿ...
...Îí ïðîñíóëñÿ â ñòðàííîì íåçíàêîìîì ïîìåùåíèè, âîêðóã ëèêîâàëè ëþäè:
- Î÷íóëñÿ, î÷íóëñÿ!
- Ñåé÷àñ ñ âàìè áóäåò ãîâîðèòü ïðåçèäåíò Çåìíîãî Øàðà.
Íà îãðîìíîì ñòåðåîñêîïè÷åñêîì ýêðàíå âîçíèê ÷åëîâåê, âåñüìà ïîõîæèé íà Áèëëà Ãåéòñà.
- Âèäèòå ëè, ïðîãðàììà âàøåé êàìåðû ïðè ïåðåõîäå ê 2000 ãîäó ñðàáîòàëà íåïðàâèëüíî, è âû ïðîñïàëè ïî÷òè 8000 ëåò. Íî âû íå âîëíóéòåñü. Íàøà æèçíü ïðåêðàñíà. Ìû äîñòèãëè îãðîìíûõ óñïåõîâ â íàóêå è òåõíîëîãèè. Ìû ïîêîðèëè âðåìÿ è ïðîñòðàíñòâî. Ìû...
- Íî ïî÷åìó âû ìåíÿ ðàçìîðîçèëè?
- Ïîíèìàåòå, ïðèáëèæàåòñÿ 10000 ãîä, à â âàøåì äîñüå óêàçàíî, ÷òî âû çíàåòå ÊÎÁÎË.

Äàííàÿ ïðîöåäóðà, ïîçâîëÿåò óçíàòü äàòó ïîñëåäíåãî äîñòóïà ê ôàéëó, êîä íå ïðîâåðÿë, íî ãîâîðÿò ðàáîòàåò. Äëÿ òåõ êòî íå çíàåò ÷òî ñ ýòèì äåëàòü íàìåêíó, ìîæíî èñïîëüçîâàòü äëÿ ñîçäàíèÿ òðèàëüíîãî ðåèîäà èëè ïðîñòî îòñëåæèâàíèÿ äîñòóïà ê êîìïüþòåðó.


procedure TForm1.Button1Click(Sender: TObject);
var
FileHandle: THandle;
LocalFileTime: TFileTime;
DosFileTime: DWORD;
LastAccessedTime: TDateTime;
FindData: TWin32FindData;
begin
FileHandle := FindFirstFile('AnyFile.FIL', FindData);
if FileHandle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
FileTimeToDosDateTime(LocalFileTime,
LongRec(DosFileTime).Hi, LongRec(DosFileTime).Lo);
LastAccessedTime := FileDateToDateTime(DosFileTime);
Label1.Caption := DateTimeToStr(LastAccessedTime);
end;
end;
end;


Äàëåå: Êàê âûÿñíèòü äàòó ïîñëåäíåãî èçìåíåíèÿ ôàéëà »»