Mega Code Archive

 
Categories / Delphi / Files
 

Get-set the date of a folder

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;