Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.009 c
1-28084
shust
2002-11-28 11:02
2002.12.09
Как загрузить анимированный курсор?


3-27907
RomanB
2002-11-21 15:54
2002.12.09
BDE<->*.mdb


1-28070
Vagrant
2002-11-27 01:58
2002.12.09
Runtime error 216


1-28039
Ag2002
2002-11-30 11:25
2002.12.09
двухсвязные списки


14-28254
Ketmar
2002-11-16 20:35
2002.12.09
я сильный....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский