![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И снова о датах... [D5, Win95/98, WinXP]
antonioxxx © (2002-09-29 15:57:00)Уважаемые программисты! Подскажите, пожалуйста, почему не работает следующая процедура, изменяющая дату создания файла. Никаких ошибок не возникает, но и дата создания не меняется. Операционка - WinXP:
Procedure SetFileDateEx(FileName:String; fFileDate:TDateTime);
Var
FileAttr: WIN32_FILE_ATTRIBUTE_DATA;
FileSystemTime: TSystemTime;
Begin
if GetFileAttributesEx(PChar(FileName), GetFileExInfoStandard, @FileAttr) then begin
DateTimeToSystemTime(fFileDate,FileSystemTime);
SystemTimeToFileTime(FileSystemTime,FileAttr.ftCreationTime);
fFileDate := SystemTimeToDateTime(FileSystemTime);
end else
MessageBoxEx(0,"Произошла ошибка","Ошибка",MB_IconError,0);
End;
antonioxxx (2002-10-08 00:20:00) [1]Почему эта процедура не работает?
antonioxxx (2002-09-30 23:58:00) [2]Минуточку! А как же функция SetFileTime, которая, как гласит справка,"...The SetFileTime function sets the date and time that a file was created, last accessed, or last modified..."
А вот, ксати, и пример процедуры с её использованием. Но вот парадокс - при первом запуске этой процедуры дата поменилась, а больше ни у одного файла этот финт произвести не удалось...
Procedure SetFileDateEx(FileName:String; fFileDate:TDateTime);
Var
F:Cardinal;
FileTime: TFileTime;
SystemTime: TSystemTime;
Begin
If FileExists(FileName) Then
Begin
F:=FileOpen(FileName,GENERIC_WRITE);
DateTimeToSystemTime(fFileDate,SystemTime);
SystemTimeToFileTime(SystemTime,FileTime);
SetFileTime(F,@FileTime,nil,nil);
FileClose(F);
ZeroMemory(@FileTime,SizeOf(@FileTime));
End
Else
MessageBoxEx(0,"Файл по указанному адресу не найден","Ошибка",MB_IconError,0);
End;
han_malign (2002-09-30 14:05:00) [3]Стандартными средствами изменить у файла ничего кроме атрибутов нельзя (r/a/h/s).
Поменять время можно только выставив системное время на необходимое и скопировав(переместив)файл (создать его заново, и не забыть вернуть время системы на нормальное).
Dot (2002-09-29 20:48:00) [4]где ты меняешь?
antonioxxx (2002-09-29 20:25:00) [5]>Dot Где?
Dot (2002-09-29 16:05:00) [6]может я ошибаюсь но разве не SetFileAttributes выставляют?