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

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

Установить новое время на файле [D6, D7, WinXP]


beglec ©   (2006-03-05 10:22:00) 

Не могу понять, почему не устанавливается новое время на файле:

Пробую 1 вариант:

var TheFile: file;
begin
  AssignFile(TheFile, ‘tmp.tmp’);
  Reset(TheFile);
  FileSetDate(TFileRec(TheFile).Handle, DateTimeToFileDate(1));
  Close(TheFile);
end;


Пробую 2 вариант:

Var vhnd: Integer;
begin
  vhnd := FileOpen(‘tmp.tmp’, fmOpenReadWrite);
  FileSetDate(vhnd, Datetimetofiledate(1));
  FileClose(vhnd);
end;

Также не получается

Пробую просто

FileSetDate(‘tmp.tmp’,1);

Тот же  эффект :(

А это код из моей программы

  SQL_File.SaveToFile('tmp.tmp');
  SQL_File.Clear;
  FileSetDate('tmp.tmp',1);
  Halt;


Подскажите что сделать?! Никаких ошибок не выдает!

Цель нужно изменить время создания файла и последнего изменения файле.


anton_k   (2006-03-05 13:21:00) [1]

А зачем для функции FileSetDate пример? Там и без примера все ясно. А описание SetFileTime можно найти или в Windows SDK, который устанавливается вместе с Delphi, или в MSDN.


beglec   (2006-03-05 12:46:00) [2]

смотря какую справку - это довольно абстрактное понятие.

Еще раз говорю
FileSetDate(const FileName: string; Age: Integer): Integer; overload;
я ненашел ни одного рабочего примера.
может чего то не так делаю, что в полне возможно
но справка по этой функии примера не дает

SetFileTime - абсолютно нет описания. Правила использования наковырял в исходниках Windows библиотечки


anton_k   (2006-03-05 12:11:00) [3]


> мне пришлось довольно много перелапатить причем там где
> "начинающему" явно далеко.

Достаточно было заглянуть в справку.


beglec   (2006-03-05 11:25:00) [4]

нашел решение
  hFile:=FileOpen(FileName,fmOpenWrite OR fmShareDenyNone);                                    
  try
     if hFile<>0 then
     begin
        DateTimeToSystemTime(DT,SystemTime);
        FileTime.dwLowDateTime:=1;
        Windows.SetFileTime(hFile,@FileTime,nil,nil);                          
        Windows.SetFileTime(hFile,nil,@FileTime,nil);
        Windows.SetFileTime(hFile,nil,nil,@FileTime);                          
     end;
  finally FileClose(hFile);                                                    
  end;

P.S. пи............................... в сторону админа который переместил эту ветку в начинающих. Если эти примеры действительно не работающие!!! ни одного ответа. Значит проблема не такая легкая как кажется на первый взгляд. Зато некоторые темы ламерские темы обсуждаем по 250 раз :(
Извиняюсь, просто напикело и надоело.

Например чтобы докопаться до этого примера, мне пришлось довольно много перелапатить причем там где "начинающему" явно далеко.

Еще раз извиняюсь на резкость в сторону админов.


beglec   (2006-03-05 10:23:00) [5]

Поправка SQL_File это TMemoryStream


Наверх

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