Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Дата создания каталога и перевод часов


Автор: Proloxy 3.11.2009, 16:24
Для получения даты создания каталога использую следующую функцию:
Код

function GetDirTime(const Dir: string): TDateTime;
var
  H: Integer;
  F: TFileTime;
  S: TSystemTime;
begin
  H := CreateFile(PChar(Dir), $0080, 0, nil, OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS, 0);
  if H <> -1 then
  begin
    GetFileTime(H, @F, nil, nil);
    FileTimeToLocalFileTime(F, F);
    FileTimeToSystemTime(F, S);
    Result := SystemTimeToDateTime(S);
    CloseHandle(H);
  end
  else
    Result := -1;
end;

Возвращаемый результат изменился на час после перевода часов  smile 
Можно ли учесть автоматический переход на летнее время и скорректировать возвращаемый результат? 

Автор: Proloxy 3.11.2009, 16:48
Вопрос решён, окончательный вариант функции:
Код

function GetDirTime(const Dir: string): TDateTime;
var
  H: Integer;
  F: TFileTime;
  S: TSystemTime;
begin
  H := CreateFile(PChar(Dir), $0080, 0, nil, OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS, 0);
  if H <> -1 then
    begin
      GetFileTime(H, @F, nil, nil);
      FileTimeToSystemTime(F, S);
      SystemTimeToTzSpecificLocalTime(nil, S, S);
      Result := SystemTimeToDateTime(S);
      CloseHandle(H);
    end
  else
    Result := -1;
end;

Автор: CodeMonkey 3.11.2009, 21:50
http://transl-gunsmoker.blogspot.com/2008/11/blog-post_8830.html - может оказаться интересным для вас. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)