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

Вниз

Смена даты открытия файла.   Найти похожие ветки 

 
Denis_ ©   (2007-10-02 15:14) [0]

Как сделать?
пробовал вот эту ф-цию.
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);
   end;
 finally
   FileClose(Handle);
 end;
end;
(с)INS

Не работает :(
я пробовал убрать FileClose(Handle); работает только до закрытия программы. А потом дата меняется:(
Можно ли реализовать ???


 
clickmaker ©   (2007-10-02 15:17) [1]

Handle := CreateFile(FileName, FILE_WRITE_ATTRIBUTES, 0, nil, OPEN_EXISTING, 0, 0);
Result:=SetFileTime(Handle,nil,@FileTime,nil);
CloseHandle(Handle);


 
Denis_ ©   (2007-10-02 15:23) [2]


> clickmaker ©   (02.10.07 15:17) [1]


[Error] ExFiles.pas(127): Undeclared identifier: "FILE_WRITE_ATTRIBUTES"

:(


 
Вася Правильный   (2007-10-02 15:27) [3]

F1


 
clickmaker ©   (2007-10-02 15:28) [4]

$100


 
Denis_ ©   (2007-10-02 15:35) [5]


> clickmaker ©   (02.10.07 15:28) [4]

Подставил. Не работает :(
function SetFileLastAccessDateTime(FileName: TFileName; Date: TDateTime): Boolean;
var
 Handle: HFile;
 FileTime: TFileTime;
begin
 Result:=false;
 FileTime:=DateTimeToFileTime(Date);
 Handle := CreateFile(pChar(FileName), $100, 0, nil, OPEN_EXISTING, 0, 0);
 Result:=SetFileTime(Handle,nil,@FileTime,nil);
 CloseHandle(Handle);
end;


 
Германн ©   (2007-10-02 15:36) [6]


> Подставил. Не работает :(

)))))))


 
clickmaker ©   (2007-10-02 15:37) [7]

Win32Check(SetFileTime(Handle,nil,@FileTime,nil));
ы?


 
Denis_ ©   (2007-10-02 15:44) [8]

Функция правильно выполняется. Но дата остаётся прежней.


 
Инс ©   (2007-10-02 15:45) [9]


> clickmaker ©   (02.10.07 15:37) [7]

Рискну предположить, что дело не в этом. Скорее всего система в любом случае перезапишет дату последнего доступа при закрытии файла.


 
clickmaker ©   (2007-10-02 15:47) [10]


> [9] Инс ©   (02.10.07 15:45)

а, точно! там же дата последнего доступа
ну тогда да


 
Denis_ ©   (2007-10-02 15:49) [11]


>
> а, точно! там же дата последнего доступа
> ну тогда да

Значит, нельзя?:(


 
Инс ©   (2007-10-02 15:50) [12]


> Значит, нельзя?:(

В 0-кольце все можно! ;)


 
Anatoly Podgoretsky ©   (2007-10-02 15:56) [13]

> Denis_  (02.10.2007 15:14:00)  [0]

> Можно ли реализовать ???

Что?


 
Denis_ ©   (2007-10-02 15:58) [14]

Анатолий, ну что Вы сразу...:( Понятно же, что - смену даты и времени последнего доступа к файлу.


 
Инс ©   (2007-10-02 16:02) [15]


> clickmaker ©   (02.10.07 15:28) [4]
>
> $100

Это сумма, за которую вы готовы решить эту проблему? ;-)


 
Anatoly Podgoretsky ©   (2007-10-02 16:08) [16]

> Denis_  (02.10.2007 15:49:11)  [11]

Можно, а смысл, ведь даже проверить не сможешь.


 
Anatoly Podgoretsky ©   (2007-10-02 16:09) [17]

> Denis_  (02.10.2007 15:58:14)  [14]

А как ты проверишь без доступа к файлу?
Самый правильный и единственный путь изменить дату - это обратиться к файлу.


 
Denis_ ©   (2007-10-02 16:11) [18]

Обьясняю  :  хочу, что бы в "Свойствах", там , где написано "открыт:" дата была не та, которая сейчас, а та , которую я поставлю.


 
Anatoly Podgoretsky ©   (2007-10-02 16:12) [19]

> Инс  (02.10.2007 16:02:15)  [15]

Это сумма только за готовность


 
Инс ©   (2007-10-02 16:13) [20]


> Обьясняю  :  хочу, что бы в "Свойствах", там , где написано
> "открыт:" дата была не та, которая сейчас, а та , которую
> я поставлю.

И вот как только ты вызовешь меню "Свойства" - дата изменится на текущую.


 
clickmaker ©   (2007-10-02 16:14) [21]


> [18] Denis_ ©   (02.10.07 16:11)

а смысл, кстати?


 
Denis_ ©   (2007-10-02 16:15) [22]


> Инс ©   (02.10.07 16:13) [20]

Нет. Я проверял. Не меняется.


 
Инс ©   (2007-10-02 16:16) [23]


> Denis_ ©   (02.10.07 16:15) [22]

А у меня меняется. И это логично.


 
Anatoly Podgoretsky ©   (2007-10-02 16:18) [24]

> Инс  (02.10.2007 16:13:20)  [20]

Ну совсем не так, оно живет своей совсем не понятной жизнью.


 
Инс ©   (2007-10-02 16:19) [25]

Хотя не всегда. Когда второй раз вызываешь для того же файла - остается предыдущая


 
Рамиль ©   (2007-10-02 16:22) [26]


> И это логично.

Не, не логично. Зачем свойство, которое можно просмотреть только изменив? Или тут принцип квантовой неопределенности?:)


 
clickmaker ©   (2007-10-02 16:22) [27]

To preserve the existing last access time for a file even after accessing a file, call SetFileTime with this parameter set to -1 before closing the file handle.

(c) MSDN


 
Dib@zol ©   (2007-10-02 16:37) [28]

> > И это логично.
>
> Не, не логично.


Как раз всё логично. Вот убедительное доказательство. Поставьте бряк на выделенную строку и запустите функцию с именем какогонить файла. Когда прога стопнется на бряке, посмотрите "свойства". Там стоит дата, нужная нам. Продолжите выполнение проги и ещё раз зайдите в "Свойства". Опа! Дата поменялась.

function SetFileLastAccessDateTime(FN: PChar; ST: SYSTEMTIME): Boolean;
var
 H : HFILE;
 OT : SYSTEMTIME;
begin
 Result:=false;
 H:=CreateFile(FN, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 GetLocalTime(OT);
 SetLocalTime(ST);
 CloseHandle(H);
 SetLocalTime(OT); <- Сюда поставить брякпойнт
end;


 
Инс ©   (2007-10-02 16:44) [29]


> clickmaker ©   (02.10.07 16:22) [27]

Действительно, в справке по SetFileTime это написано. Интересно, не знал об этом, спасибо, может когда-нибудь и пригодится...


 
Anatoly Podgoretsky ©   (2007-10-02 17:21) [30]

> Инс  (02.10.2007 16:19:25)  [25]

Вот и не понять по каким законам она меняется, может есть какой то минимальный интервал.


 
Инс ©   (2007-10-02 17:28) [31]


> может есть какой то минимальный интервал.

Скорее всего она просто кэширует это. Чтобы второй раз к файлу не обращаться. По крайней мере размер папки при первом обращении показывается постепенно, по мере вычисления, а второй раз - сразу.


 
vpbar ©   (2007-10-02 18:17) [32]

А уменя вообще отключено обновление LastAccessDateTime. Так что ее можно менять как угодно. Только зачем



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

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

Наверх




Память: 0.54 MB
Время: 0.028 c
2-1191311740
tmp
2007-10-02 11:55
2007.10.28
Неправильно удаляются записи из нетипизированного файла


5-1161855063
DevilDevil
2006-10-26 13:31
2007.10.28
Parent = TPanel


4-1177599496
ffo_2
2007-04-26 18:58
2007.10.28
Как получить имя этого компонента?


6-1172476821
Empleado
2007-02-26 11:00
2007.10.28
Общий вопрос по структуре программы


2-1191585461
Kilkik
2007-10-05 15:57
2007.10.28
Вхождение строки