Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменить ВРЕМЯ создания файла? [D7, 95/98]


sadko ©   (2006-01-05 20:45:00) 


Fay   (2006-01-05 22:04:00) [1]

2 Revan   (05.01.06 21:42) [5]
> H: Integer;
На самом деле DWORD

> , FILE_FLAG_BACKUP_SEMANTICS
А жирно не будет?
> OPEN_EXISTING
Это, конечно здорово, но где проверка результата CreateFile?

Да и ваще, зачем такие ужасы с i := Date;?
GetLocal(System)Time ещё никто не отменял.

З.Ы.
Странное имя для для даты - i.
Да и тип странный - TDate. Date() возвращает конкретно TDateTime.


Gero   (2006-01-05 21:44:00) [2]



// SetFileToCurrentTime - sets last write time to current system time
// Return value - TRUE if successful, FALSE otherwise
// hFile  - must be a valid file handle

BOOL SetFileToCurrentTime(HANDLE hFile)
{
   FILETIME ft;
   SYSTEMTIME st;
   BOOL f;

   GetSystemTime(&st);              // gets current time
   SystemTimeToFileTime(&st, &ft);  // converts to file time format
   f = SetFileTime(hFile,           // sets last-write time for file
       (LPFILETIME) NULL, (LPFILETIME) NULL, &ft);

   return f;
}


Gero   (2006-01-05 21:44:00) [3]

А у вас без комментариев! :P


Revan   (2006-01-05 21:42:00) [4]


procedure TfrmMain.ChangeDate(AFileName: string);
var
 i: TDate;
 H: Integer;
 f: TFileTime;
 s: TSystemTime;
begin
 H := CreateFile(PChar(AFileName), $0100, 0, nil, OPEN_EXISTING,
   FILE_FLAG_BACKUP_SEMANTICS, 0);

 i := Date;

 DateTimeToSystemTime(i, S);
 SystemTimeToFileTime(S, F);
 LocalFileTimeToFileTime(F, F);
 SetFileTime(H, @f, @f, @f);
 CloseHandle(H);
end;


Вот так! Проверено :)


begin...end   (2006-01-05 21:30:00) [5]

> sadko   (05.01.06 20:55) [2]

Пример. Устанавливает время создания файла равной текущему времени.

var
 H: Cardinal;
 ST: TSystemTime;
 FT: TFileTime;
begin
 H := FileOpen('C:\MyFile.txt', fmOpenWrite);
 try
   GetSystemTime(ST);
   SystemTimeToFileTime(ST, FT);
   SetFileTime(H, @FT, nil, nil);
 finally
   FileClose(H)
 end
end


Gero   (2006-01-05 21:11:00) [6]

> sadko   (05.01.06 20:55)

http://www.google.com.ru/search?q=SetFileTime

По первой же ссылке будет описапние с примером.


sadko   (2006-01-05 20:55:00) [7]

я извиняюсь, приведите пример исспользования


begin...end   (2006-01-05 20:51:00) [8]

API-функция SetFileTime. Будут вопросы -- спрашивайте.


Наверх

Титульная страница Поиск, карта сайта Написать письмо