Форум: "Начинающим";
Текущий архив: 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.51 MB
Время: 0.082 c