![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена даты открытия файла.
Denis_ © (2007-10-02 15:14:00)Как сделать?
пробовал вот эту ф-цию.
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); работает только до закрытия программы. А потом дата меняется:(
Можно ли реализовать ???
vpbar (2007-10-02 18:17:00) [1]А уменя вообще отключено обновление LastAccessDateTime. Так что ее можно менять как угодно. Только зачем
Инс (2007-10-02 17:28:00) [2]
> может есть какой то минимальный интервал.
Скорее всего она просто кэширует это. Чтобы второй раз к файлу не обращаться. По крайней мере размер папки при первом обращении показывается постепенно, по мере вычисления, а второй раз - сразу.
Anatoly Podgoretsky (2007-10-02 17:21:00) [3]> Инс (02.10.2007 16:19:25) [25]
Вот и не понять по каким законам она меняется, может есть какой то минимальный интервал.
Инс (2007-10-02 16:44:00) [4]
> clickmaker © (02.10.07 16:22) [27]
Действительно, в справке по SetFileTime это написано. Интересно, не знал об этом, спасибо, может когда-нибудь и пригодится...
Dib@zol (2007-10-02 16:37:00) [5]> > И это логично.
>
> Не, не логично.
Как раз всё логично. Вот убедительное доказательство. Поставьте бряк на выделенную строку и запустите функцию с именем какогонить файла. Когда прога стопнется на бряке, посмотрите "свойства". Там стоит дата, нужная нам. Продолжите выполнение проги и ещё раз зайдите в "Свойства". Опа! Дата поменялась.
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;
clickmaker (2007-10-02 16:22:00) [6]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
Рамиль (2007-10-02 16:22:00) [7]
> И это логично.
Не, не логично. Зачем свойство, которое можно просмотреть только изменив? Или тут принцип квантовой неопределенности?:)
Инс (2007-10-02 16:19:00) [8]Хотя не всегда. Когда второй раз вызываешь для того же файла - остается предыдущая
Anatoly Podgoretsky (2007-10-02 16:18:00) [9]> Инс (02.10.2007 16:13:20) [20]
Ну совсем не так, оно живет своей совсем не понятной жизнью.
Инс (2007-10-02 16:16:00) [10]
> Denis_ © (02.10.07 16:15) [22]
А у меня меняется. И это логично.
Denis_ (2007-10-02 16:15:00) [11]
> Инс © (02.10.07 16:13) [20]
Нет. Я проверял. Не меняется.
clickmaker (2007-10-02 16:14:00) [12]
> [18] Denis_ © (02.10.07 16:11)
а смысл, кстати?
Инс (2007-10-02 16:13:00) [13]
> Обьясняю : хочу, что бы в "Свойствах", там , где написано
> "открыт:" дата была не та, которая сейчас, а та , которую
> я поставлю.
И вот как только ты вызовешь меню "Свойства" - дата изменится на текущую.
Anatoly Podgoretsky (2007-10-02 16:12:00) [14]> Инс (02.10.2007 16:02:15) [15]
Это сумма только за готовность
Denis_ (2007-10-02 16:11:00) [15]Обьясняю : хочу, что бы в "Свойствах", там , где написано "открыт:" дата была не та, которая сейчас, а та , которую я поставлю.
Anatoly Podgoretsky (2007-10-02 16:09:00) [16]> Denis_ (02.10.2007 15:58:14) [14]
А как ты проверишь без доступа к файлу?
Самый правильный и единственный путь изменить дату - это обратиться к файлу.
Anatoly Podgoretsky (2007-10-02 16:08:00) [17]> Denis_ (02.10.2007 15:49:11) [11]
Можно, а смысл, ведь даже проверить не сможешь.
Инс (2007-10-02 16:02:00) [18]
> clickmaker © (02.10.07 15:28) [4]
>
> $100
Это сумма, за которую вы готовы решить эту проблему? ;-)
Denis_ (2007-10-02 15:58:00) [19]Анатолий, ну что Вы сразу...:( Понятно же, что - смену даты и времени последнего доступа к файлу.
Anatoly Podgoretsky (2007-10-02 15:56:00) [20]> Denis_ (02.10.2007 15:14:00) [0]
> Можно ли реализовать ???
Что?