Дата у файла
TFileTime __fastcall GetFileLastSavedTime(AnsiString FileFullName)
{
TFileTime lft;
try
{
HANDLE hFile;
hFile = CreateFile(FileFullName.c_str(), // file to open
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL);
TFileTime *lftCreate = new TFileTime();
TFileTime *lftOpen = new TFileTime();
TFileTime *lftSave = new TFileTime();
GetFileTime(hFile,lftCreate,lftOpen,lftSave);
lft.dwLowDateTime = lftSave->dwLowDateTime;
lft.dwHighDateTime = lftSave->dwHighDateTime;
CloseHandle(hFile);
delete lftCreate;
delete lftOpen;
delete lftSave;
return lft;
}
catch(...)
{
lft.dwLowDateTime = 0;
lft.dwHighDateTime = 0;
return lft;}
}
Хочу взять дату последнего изменения файла, а все время возвращается разные значения.
посмотрев в msdn, я нашел вот что:
Not all file systems can record creation and last access time and not all file systems record them in the same manner. For example, on Windows NT FAT, create time has a resolution of 10 milliseconds, write time has a resolution of 2 seconds, and access time has a resolution of 1 day (really, the access date). On NTFS, access time has a resolution of 1 hour. Therefore, the GetFileTime function may not return the same file time information set using SetFileTime. Furthermore, FAT records times on disk in local time. However, NTFS records times on disk in UTC. For more information, see File Times.
посмотрев в msdn, я нашел вот что:
...
Я слышал что в разтых ФС врямя по разному представлено, но для меня это не играет никакой роли. Я скачиваю файл с сервера, сохранияю у себя на диске, запоминаю дату его последнего изменения, и проверяю раз в 10 секунд не изменилась ли эта дата. И вся проблема в том, что эта гадина выдает разное время, когда я только сохранил файл одно, через десять секунд другое, а я этот файл вообще не торогаю, даже не дышу на него.
Это вирус! :)