Главная страница
    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.007 c
1-28054
Starkom
2002-11-27 08:43
2002.12.09
проблема с TActionList.OnUpdate в Dll


14-28267
VEG
2002-11-18 20:47
2002.12.09
Наш любимый чат...


8-28142
ioRaptor
2002-08-23 10:31
2002.12.09
Инфо из AVI (DivX) фаила.


14-28240
JC
2002-11-18 11:33
2002.12.09
Есть идея...


3-27873
Calm
2002-11-21 12:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский