Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.041 c
2-1191311223
Abcdef123
2007-10-02 11:47
2007.10.28
Поясните Пример кода на использование KeyPush.DLL


9-1162110637
Zlodey
2006-10-29 11:30
2007.10.28
DelphiX


2-1191521205
hinst
2007-10-04 22:06
2007.10.28
Сдерживание потоков


15-1191303419
de.
2007-10-02 09:36
2007.10.28
8 - |


2-1191912772
Scarllett
2007-10-09 10:52
2007.10.28
? OnClick event для страницы в MS EI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский