Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить атрибуты файла: создан, изменен, открыт 
V
    Опции темы
Alca
Дата 12.12.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Как изменить атрибуты файла: создан, изменен, открыт?
Нашел кое-что на Делфях:

Как изменить дату и время файла
Код

procedure ChangefileStamp(filename: TFileName; newtime: TDateTime);
var
  vhnd: Integer;
begin
  vhnd := FileOpen(filename, fmOpenReadWrite);
  FileSetDate(vhnd, Datetimetofiledate(newtime));
  FileClose(vhnd);
end;


Как изменить дату и время файла 2
Код

procedure TouchFile(const FileName: string; Date: TDateTime);
var
  TheFile: file;
begin
  AssignFile(TheFile, FileName);
  Reset(TheFile);
  FileSetDate(TFileRec(TheFile).Handle, DateTimeToFileDate(Date));
  Close(TheFile);
end;


Поменять даты создания, изменения, доступа к файлу
Код

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;


Это сообщение отредактировал(а) Alca - 12.12.2008, 14:26


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 12.12.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Код

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

  GetSystemTime(&st);                 // получить текущее время
  SystemTimeToFileTime(&st, &ft);     // преобразовать в файловый формат
  return SetFileTime(hFile,           // установить дату/время модификации файла
              (LPFILETIME) NULL, (LPFILETIME) NULL, &ft);
}



--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 12.12.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Изменение даты создания каталога 

Код

function SetDirTime(const Dir: string; Year, Month, Day, Hour, Minute, Second:
  Word): Boolean; overload;
var
  H: Integer;
  F: TFileTime;
  S: TSystemTime;
begin
  H := CreateFile(PChar(Dir), $0100, 0, nil, OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS, 0);
  if H <> -1 then
  begin
    S.wYear := Year;
    S.wMonth := Month;
    S.wDay := Day;
    S.wHour := Hour;
    S.wMinute := Minute;
    S.wSecond := Second;
    SystemTimeToFileTime(S, F);
    LocalFileTimeToFileTime(F, F);
    Result := Boolean(SetFileTime(H, @F, @F, @F));
    CloseHandle(H);
  end
  else
    Result := False;
end;

function SetDirTime(const Dir: string; DateTime: TDateTime): Boolean; overload;
var
  H: Integer;
  F: TFileTime;
  S: TSystemTime;
begin
  H := CreateFile(PChar(Dir), $0100, 0, nil, OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS, 0);
  if H <> -1 then
  begin
    DateTimeToSystemTime(DateTime, S);
    SystemTimeToFileTime(S, F);
    LocalFileTimeToFileTime(F, F);
    Result := Boolean(SetFileTime(H, @F, @F, @F));
    CloseHandle(H);
  end
  else
    Result := False;
end;


Пример использования: 
Код

if not SetDirTime('c:\Program Files', 2004, 2, 4, 12, 0, 0) then
  ShowMessage('Error!');



--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.