Форум: "Система";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
ВнизИ снова о датах... Найти похожие ветки
← →
antonioxxx (2002-09-29 15:57) [0]Уважаемые программисты! Подскажите, пожалуйста, почему не работает следующая процедура, изменяющая дату создания файла. Никаких ошибок не возникает, но и дата создания не меняется. Операционка - 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;
← →
Dot (2002-09-29 16:05) [1]может я ошибаюсь но разве не SetFileAttributes выставляют?
← →
antonioxxx (2002-09-29 20:25) [2]>Dot Где?
← →
Dot (2002-09-29 20:48) [3]где ты меняешь?
← →
han_malign (2002-09-30 14:05) [4]Стандартными средствами изменить у файла ничего кроме атрибутов нельзя (r/a/h/s).
Поменять время можно только выставив системное время на необходимое и скопировав(переместив)файл (создать его заново, и не забыть вернуть время системы на нормальное).
← →
antonioxxx (2002-09-30 23:58) [5]Минуточку! А как же функция 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;
← →
antonioxxx (2002-10-08 00:20) [6]Почему эта процедура не работает?
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c