Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

И снова о датах...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.008 c
1-27911
Lenok
2002-11-27 15:52
2002.12.09
работа с dll


1-27951
DM
2002-11-29 13:20
2002.12.09
TstrigGrid


1-27955
Alexander Vasjuk
2002-11-29 12:38
2002.12.09
Отображение связанных данных


3-27896
tv
2002-11-21 14:17
2002.12.09
Как определить, есть ли запись в таблице при добавлении новой.


1-28128
ProNixp
2002-11-28 17:46
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский