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

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

Смена даты открытия файла.


Страницы:   1 2

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]

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

Что?


Страницы:   1 2

Наверх

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