{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Функция определяет дату и время создания каталога и возвращает результат в формате TDateTime.
Cм. также: http://delphibase.endimus.com/?action=viewfunc&topic=fileattr&id=10497
Зависимости: Windows
Автор: Dimka Maslov, mainbox@endimus.com, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 4 февраля 2004 г.
***************************************************** }function GetDirTime(const Dir: string): TDateTime;
var
H: Integer;
F: TFileTime;
S: TSystemTime;
begin
H := CreateFile(PChar(Dir), $0080, 0, nil, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, 0);
if H <> -1 thenbegin
GetFileTime(H, @F, nil, nil);
FileTimeToLocalFileTime(F, F);
FileTimeToSystemTime(F, S);
Result := SystemTimeToDateTime(S);
CloseHandle(H);
endelse
Result := -1;
end;
Функция открывает директории, указанную в параметре Dir, с помощью API CreateFile. Параметры следующие:
PChar(Dir): указатель на строку пути
$0080: желаемый режим доступа (чтение и запись)
0: режим совместного использования (не используется в этом примере)
nil: атрибуты безопасности (не используются в этом примере)
OPEN_EXISTING: действие, которое нужно выполнить, если файл не существует (открыть его все равно)
FILE_FLAG_BACKUP_SEMANTICS: флаг, указывающий, что файл является резервной копией
0: параметр hTemplateFile (не используется в этом примере)
Если функция fails, она возвращает -1. В противном случае, она продолжает выполняться.
ifH<>-1thenbeginGetFileTime(H,@F,nil,nil);
Функция получает время создания директории с помощью GetFileTime, который заполняет структуру F временем файла. Параметры следующие:
H: handle для файла или директории
@F: указатель на структуру F
nil: время последнего доступа (не используется в этом примере)
nil: время модификации (не используется в этом примере)
FileTimeToLocalFileTime(F,F);
Функция конвертирует файловое время из UTC (Coordinated Universal Time) в локальное время с помощью FileTimeToLocalFileTime.
FileTimeToSystemTime(F,S);
Функция конвертирует файловое время из структуры TFileTime в структуру TSystemTime с помощью FileTimeToSystemTime. Результатное системное время хранится в структуре S.
Result:=SystemTimeToDateTime(S);
Функция конвертирует системное время из структуры TSystemTime в структуру TDateTime с помощью SystemTimeToDateTime. Это возвращает дату и время создания директории как TDateTime.
CloseHandle(H);endelseResult:=-1;end;
Если функция fails, она закрывает handle H (если он был открыт) и возвращает -1. В противном случае, она возвращает дату и время создания директории как TDateTime.
Пример использования функции показывает, как вызвать ее с путем директории ('c:\Program Files') и отобразить результат с помощью ShowMessage и DateTimeToStr.
Функция GetDirTime позволяет получить дату и время создания каталога в формате TDateTime, используя функцию CreateFile для открытия файла каталога и FileTimeToLocalFileTime/GetFileTime для извлечения информации о времени создания.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS