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


Автор: GuManOiD 5.11.2006, 16:58
Вот код двух функций:
1. Преобразует файловое время в времядату формата Delphi:
Код

function FileTimeToDateTime(ftFileTime : _FILETIME):TDateTime;
var
  SysTime : _SYSTEMTIME;
begin
  FileTimeToLocalFileTime(ftFileTime,ftFileTime);
  FileTimeToSystemTime(ftFileTime, SysTime);
  Result := EncodeDate(SysTime.wYear, SysTime.wMonth, SysTime.wDay)+
    EncodeTime(SysTime.wHour, SysTime.wMinute, SysTime.wSecond, SysTime.wMilliseconds);
end;

2. Функция обратная 1-й:
Код

function DateTimeToFileTime(dtFileTime : TDateTime) : _FILETIME;
var
  SysTime : _SYSTEMTIME;
  ftFileTime : _FILETIME;
begin
  DateTimeToSystemTime(dtFileTime, SysTime);
  SystemTimeToFileTime(SysTime, ftFileTime);
  LocalFileTimeToFileTime(ftFileTime,ftFileTime);

  Result := ftFileTime;
end;


1-я взята из DKRB 2.3, 2-ю написал сам.

Вот в чем загвоздка, я считываю даты из файла процедурой GetFileTime, записываю SetFileTime,
т.е. нужна программа для изменения дат любого файла, открываю файловый поток в режиме fmOpenWrite.

Для передачи Handl-а файла использую myStream.Handle

Но в результате: дата последнего доступа и дата последней записи выставляются либо на текущую дату, либо на совсем неверную...

Что я делаю не так? smile

PS: Ответ "все" неприемлем smile

Добавлено @ 17:10 
Кхм... ошибка была видимо совсем не в этом, 
для каждого вида даты и времяни (т.е. для времяни последенго доступа, времяни последней записи, времяни создания)
по 2 TDateTimePicker:
1 для даты, 2 для времяни:
у DateTimePicker есть свойства Time, Date и DateTime

как из Time + Date сделать DateTime? smile

я делал так:
Код

dtpCreationDate.Date := <нужная мне дата>;
dtpCreationDate.Time := dtpCreationTime.Time;


и dtpCreationDate.DateTime записывал.

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