Время получить и изменить файлы в Delphi
В этой статье представлен метод использования системных функций и вызовов функций Windows API для получения и изменения информации о времени файла в Delphi.
Друзья, которые знакомы с Windows 95/98, часто используют метод правой кнопкой мыши, чтобы просмотреть информацию атрибута выбранного файла. Время создания файлов, время изменения и время доступа перечислены в меню свойств. Эта информация часто очень полезна, и их настройки обычно автоматически завершаются операционной системой (то есть DOS/Windows и т. Д.) И не будут легко изменены пользователями.
Здесь я представлю вас, как получить и изменить время файла в Delphi. Delphi предоставляет полный интерфейс вызова для функций Windows API, который может облегчить расширенное программирование Windows. Используя функцию FindFirst в Delphi, вы можете получить запись атрибута файла и поле FindData в этой записи записей подробной информации о времени файла. К сожалению, информация о времени в FindData не может быть получена напрямую. Поэтому кто -то (примечание редактора: извините, я не знаю имя этого человека) написал функцию преобразования, чтобы завершить преобразование формата времени файла. Конкретный метод реализации приведен ниже только для справки:
Функция Covfiledate (fd: _fileTime): tdateTime;
{Преобразовать формат времени файла}
вар
Tct: _systemtime;
Temp: _fileTime;
Начинать
Filetimetolocalfiletime (fd, temp);
FileTimeTosystemtime (TEMP, TCT);
Covfiledate: = SystemTimetoDateTime (TCT);
конец;
С помощью вышеуказанной поддержки функции мы можем получить информацию о времени файла. Вот простой пример:
Procdeure getFileTime (const tf: string);
{Получить время файла, TF представляет путь и имя целевого файла}
констант
Model = yyyy/mm/dd, hh: mm: ss;
вар
TP: TsearchRec;
T1, T2, T3: String;
Начинать
Findfirst (tf, faanyfile, tp);
Covfiledate (tp.finddata.ftcreationtime)));
{Вернуть время создания файла}
T2: = FormatDateTime (модель,
Covfiledate (tp.finddata.ftlastwriteTime)));
{Вернуть время изменения файла}
T3: = formatdateTime (модель, сейчас));
{Вернуть текущее время доступа файла}
Findclose (TP);
конец;
Время установить файл является более сложным. В следующем примере используется четыре компонента DataTimepicker для завершения настройки времени создания файлов и времени изменения. Примечание. Время доступа файла заменяется временем изменения. При использовании примера ниже добавьте четыре компонента DataTimepicker в свою форму. Там, где виды в первой и третьей компонентах DataTimepicker устанавливаются в DTKDate, и добрые во втором и четвертом компонентах DataTimepicker установлены на DTKTime.
процедура setFileDateTime (const tf: string);
{Установить время файла, TF представляет путь и имя целевого файла}
вар
DT1, DT2: целое число;
FS: tfileStream;
Fct, flt: tfileTime;
Начинать
DT1: = DateTimetOfiLedate (
Trunc (form1.datetimepicker1.date) + frac (form1.datetimepicker2.time));
DT2: = DateTimetOfiLedate (
Trunc (form1.datetimepicker3.date) + frac (form1.datetimepicker4.time));
{Преобразовать информацию, введенную пользователем в DataTimePicker}
пытаться
Fs: = tfilestream.create (tf, fmopenreadwrite);
пытаться
Если dosdateTimetOfileTime (longrec (dt1) .hi, longrec (dt1) .lo, fct) и
LocalFileTimetOfileTime (FCT, FCT) и
DosdateTimetOfileTime (longrec (dt2) .hi, longrec (dt2) .lo, flt) и
LocalFileTimetOfileTime (FLT, FLT)
затем SetFileTime (fs.Handle,
@Fct, @flt, @flt);
{Установить атрибут времени файла}
Окончательно
Fs.free;
конец;
кроме
Messagedlg (операция модификации даты не удалась!,
mterror, [mbok], 0);
{Не удастся, потому что целевой файл используется и т. Д.}
конец;
конец;
Вышеуказанное кратко представляет метод изменения атрибутов времени файла. Кроме того, пожалуйста, не используйте эту технологию для несправедливых способов, таких как уничтожение документов других людей.