Какую функцию в Delphi можно использовать...

Форум для программистов

Сообщение Anthony Fox » Чт июн 17, 2004 4:19 am

Какую функцию в Delphi можно использовать для выяснения даты создания папки (не файл)? FileAge - работает только для файлов.
When the sun and moon are joined, the entrance to eternity is opened...
<a href='http://foxsite.hut1.ru' target='_blank'>http://www.foxsite.hut1.ru</a>
Anthony Fox
Капитан
 
Сообщений: 277
Зарегистрирован: Вс май 11, 2003 8:17 am
Откуда: Россия, Татарстан
Пункты репутации: 0

Сообщение Magister » Чт июн 17, 2004 5:59 am

Попробуй API-шную
FindFirstFile();
второй параметр - структура. В ней все данные о файле или каталоге есть
<!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><!--coloro:red--><span style="color:red"><!--/coloro-->все беды - от недостатка информации<!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Magister
Генерал-майор
 
Сообщений: 2501
Зарегистрирован: Вт авг 06, 2002 4:22 am
Пункты репутации: 0

Сообщение Ciber SLasH » Чт июн 17, 2004 10:21 am

Пример проверен в ХР, в Win9x если будут траблы, то нужно покрутить предпоследний параметр (признаки и флаги файла) у функции CreateFile, посмотришь значения в хелпе по API:
Код: выделить все
uses
 Windows, SysUtils;

{--- Функция определения даты и времени папки ---}
function GetDirTime(Path: String): String;
 {-- Добавление ведущих нулей --}
 function AddLeadingZero(Value: String): String;
 begin
   Result := Value;
   while Length(Result) < 2 do
     Result := '0' + Result
 end;
 //-------------------------------
var
 hFile: Hwnd;
 SysTime: TSystemTime;  // структура содержащая системное время
 DirTime: TFileTime;   // структура с информацией о дате
 Rez: Boolean;
begin
 Result := '';
 hFile := CreateFile(PChar(Path), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
 if hFile <> INVALID_HANDLE_VALUE then
   begin
     { #########################################################################
       ######################## Параметры функции GetFileTime: ###################
       #########################################################################
       ## 1 - хэндл фала для которого необходимо определить дату и время            ##
       ## 2 - указатель на структуру с информацией о дате создания файла            ##
       ## 3 - указатель на структуру с информацией о дате последнего доступа к файлу ##
       ## 4 - указатель на структуру с информацией о дате последней записи в файл    ##
       ######################################################################### }
     Rez := GetFileTime(hFile, @DirTime, nil, nil);
     if not Rez then
     begin
       MessageBox(0, 'Не удалось получить дату создания папки !!', 'Error (GetFileTime)', MB_OK + MB_ICONERROR);
       exit
     end;
     Rez := FileTimeToSystemTime(DirTime, SysTime);  // преобразум время папки в системное время
     if not Rez then
     begin
       MessageBox(0, 'Не удалось преобразовать дату создания папки, структуры TFileTime, в системное время !!',
                  'Error (FileTimeToSystemTime)', MB_OK + MB_ICONERROR);
       exit
     end;
     with SysTime do
       Result := AddLeadingZero(IntToStr(wDay)) + '.' + AddLeadingZero(IntToStr(wMonth)) + '.' + IntToStr(wYear) +
                 ' [' + AddLeadingZero(IntToStr(wHour)) + ':' + AddLeadingZero(IntToStr(wMinute)) + ':' +
                 AddLeadingZero(IntToStr(wSecond)) + ']';
     CloseHandle(hFile)
   end
 else
   MessageBox(0, PChar('Не удалось получить хендл папки "' + Path + '" !!'), 'Error (CreateFile)', MB_OK + MB_ICONERROR)
end;
//------------------------------
begin
 MessageBox(0, PChar('Дата создания папки "D:\Temp": ' + GetDirTime('D:\Temp')), 'Info', MB_OK + MB_ICONINFORMATION)
end.
Последний раз редактировалось Ciber SLasH Чт июн 17, 2004 10:32 am, всего редактировалось 1 раз.
Ciber SLasH
Майор
 
Сообщений: 314
Зарегистрирован: Пн ноя 24, 2003 11:28 am
Откуда: Питер
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1