Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Как поменять дату файла?   Найти похожие ветки 

 
Ega23 ©   (2007-10-16 12:02) [0]

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


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

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


 
Ega23 ©   (2007-10-16 12:08) [2]

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


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

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

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) [4]


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


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


 
Ins ©   (2007-10-16 12:09) [5]


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

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


 
Ega23 ©   (2007-10-16 12:09) [6]


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


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


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


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

Самописное


 
Denis__ ©   (2007-10-16 15:55) [8]

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


 
Ins ©   (2007-10-16 15:59) [9]


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1192622267
foreverDelphi
2007-10-17 15:57
2007.11.11
f1:File;


15-1191387880
oxffff
2007-10-03 09:04
2007.11.11
CodeGear RAD Studio 2007 – the Smart Alternative


8-1169034939
Vovan #2
2007-01-17 14:55
2007.11.11
Работа со звуком в Delphi


2-1192725256
pathfinder
2007-10-18 20:34
2007.11.11
TStream


2-1192539115
фыва
2007-10-16 16:51
2007.11.11
TCheckListBox