Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поменять дату файла? [D7]


Ega23 ©   (2007-10-16 12:02:00) 

Недавно проскакивало, но что-то не нашёл...
Ткните носом в хелп, плиз...


Ins   (2007-10-16 15:59:00) [1]


> Инс, чего не исправил?

Даже с этой строчкой?
SetFileTime(Handle,nil,-1,nil);

Если все равно не работает, то и фиг с ним. Мне оно не надо? :)


Denis__   (2007-10-16 15:55:00) [2]

function SetFileLastAccessDateTime(FileName: TFileName; Date: TDateTime): Boolean;
Не работает :) Инс, чего не исправил?


Ins   (2007-10-16 12:10:00) [3]


> Это самописное?

Самописное


Ins   (2007-10-16 12:09:00) [4]


> Так, новая вводная.

Огласите весь список


Ega23   (2007-10-16 12:09:00) [5]


> Ins ©   (16.10.07 12:08) [3]


Это самописное?


Ega23   (2007-10-16 12:08:00) [6]

Так, новая вводная. SetFileTime я уже нашёл.
Речь о командной строке, т.е. из cmd-shell
Желательно средствами самого shell, без JScript или VBScript


Ins   (2007-10-16 12:08:00) [7]

Попробуйте это.

unit ExFiles;

interface

uses Windows, SysUtils;

function GetFileCreationDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
function GetFileLastAccessDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
function GetFileLastWriteDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
function SetFileCreationDateTime(FileName: TFileName; Date: TDateTime): Boolean;
function SetFileLastAccessDateTime(FileName: TFileName; Date: TDateTime): Boolean;
function SetFileLastWriteDateTime(FileName: TFileName; Date: TDateTime): Boolean;

implementation

function DateTimeToFileTime(Date: TDateTime): TFileTime;
var
 LocalFileTime: TFileTime;
 DosTime: Integer;
begin
 DosTime:=DateTimeToFileDate(Date);
 DosDateTimeToFileTime(LongRec(DosTime).Hi,LongRec(DosTime).Lo,LocalFileTime);
 LocalFileTimeToFileTime(LocalFileTime,Result);
end;

function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
var
 LocalFileTime: TFileTime;
 DosTime: Integer;
begin
 FileTimeToLocalFileTime(FileTime,LocalFileTime);
 FileTimeToDosDateTime(LocalFileTime,LongRec(DosTime).Hi,LongRec(DosTime).Lo);
 Result:=FileDateToDateTime(DosTime);
end;

function GetFileCreationDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenRead));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     if GetFileTime(Handle,@FileTime,nil,nil) then begin
       Date:=FileTimeToDateTime(FileTime);
       Result:=true;
     end;
   end;
 finally
   FileClose(Handle);
 end;
end;

function GetFileLastAccessDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenRead));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     if GetFileTime(Handle,nil,@FileTime,nil) then begin
       Date:=FileTimeToDateTime(FileTime);
       Result:=true;
     end;
   end;
 finally
   FileClose(Handle);
 end;
end;

function GetFileLastWriteDateTime(FileName: TFileName; var Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenRead));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     if GetFileTime(Handle,nil,nil,@FileTime) then begin
       Date:=FileTimeToDateTime(FileTime);
       Result:=true;
     end;
   end;
 finally
   FileClose(Handle);
 end;
end;

function SetFileCreationDateTime(FileName: TFileName; Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenWrite));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     FileTime:=DateTimeToFileTime(Date);
     Result:=SetFileTime(Handle,@FileTime,nil,nil);
   end;
 finally
   FileClose(Handle);
 end;
end;

function SetFileLastAccessDateTime(FileName: TFileName; Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenWrite));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     FileTime:=DateTimeToFileTime(Date);
     Result:=SetFileTime(Handle,nil,@FileTime,nil);
     SetFileTime(Handle,nil,-1,nil);
   end;
 finally
   FileClose(Handle);
 end;
end;


function SetFileLastWriteDateTime(FileName: TFileName; Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 Handle:=HFile(FileOpen(FileName,fmOpenWrite));
 try
   if Handle<>INVALID_HANDLE_VALUE then begin
     FileTime:=DateTimeToFileTime(Date);
     Result:=SetFileTime(Handle,nil,nil,@FileTime);
   end;
 finally
   FileClose(Handle);
 end;
end;

end.


Ega23   (2007-10-16 12:08:00) [8]


> function FileSetDate(const FileName: string; Age: Integer):
>  Integer; overload;


Спасибо, возьму на заметку.


Правильный Вася   (2007-10-16 12:06:00) [9]

function FileSetDate(const FileName: string; Age: Integer): Integer; overload;


Наверх

Титульная страница Поиск, карта сайта Написать письмо