скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Получить или установить дату для директории



Оформил: DeeCo

function GetFolderDate(Folder: string): TDateTime;
 var
   Rec: TSearchRec;
   Found: Integer;
   Date: TDateTime;
 begin
   if Folder[Length(folder)] = '\' then
     Delete(Folder, Length(folder), 1);
   Result := 0;
   Found  := FindFirst(Folder, faDirectory, Rec);
   try
     if Found = 0 then
     begin
       Date   := FileDateToDateTime(Rec.Time);
       Result := Date;
     end;
   finally
     FindClose(Rec);
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   d: TDateTime;
 begin
   d := GetFolderDate('C:\WINNT');
   ShowMessage(FormatDateTime('dddd, d. mmmm yyyy, hh:mm:ss', d));
 end;


 { Sets the time for both files and directories }
 { for NT }

 function NT_SetDateTime(FileName: string; dtCreation, dtLastAccessTime, dtLastWriteTime: TDateTime): Boolean;
 // by Nicholas Robinson 
var
   hDir: THandle;
   ftCreation: TFiletime;
   ftLastAccessTime: TFiletime;
   ftLastWriteTime: TFiletime;

   function DTtoFT(dt: TDateTime): TFiletime;
   var
     dwft: DWORD;
     ft: TFiletime;
   begin
     dwft := DateTimeToFileDate(dt);
     DosDateTimeToFileTime(LongRec(dwft).Hi, LongRec(dwft).Lo, ft);
     LocalFileTimeToFileTime(ft, Result);
   end;

 begin
   hDir := CreateFile(PChar(FileName),
                      GENERIC_READ or GENERIC_WRITE,
                      0,
                      nil,
                      OPEN_EXISTING,
                      FILE_FLAG_BACKUP_SEMANTICS,
                      0);
   if hDir <> INVALID_HANDLE_VALUE then
    begin
     try
       ftCreation       := DTtoFT(dtCreation);
       ftLastAccessTime := DTtoFT(dtLastAccessTime);
       ftLastWriteTime  := DTtoFT(dtLastWriteTime);
       Result := SetFileTime(hDir, @ftCreation, @ftLastAccessTime, @ftLastWriteTime);
     finally
       CloseHandle(hDir);
     end;
   end
   else
     Result := False;
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
   NT_SetDateTime('c:\temp\MyFolder', now, now, now);
 end;





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook