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

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

Добрый день. Как формат TFileTime перевести в нормальную дату. [D3]


Oleon ©   (2002-04-10 15:52:00) 

Хочу отбирать самые свежие файлы из разных версий одной программы. например, по дате создания. Если использовать FindFirst и TSearchRec то там есть такой параметр, но в каком то странном формате TFileTime. Что это такое и как с этим работать?
Спасибо.


mio   (2002-04-10 17:02:00) [1]

> Если использовать FindFirst и TSearchRec то там есть такой
> параметр, но в каком то странном формате TFileTime.

Ну, не знаю... Давно не видел D3. НО: В D5 Help написано примерно следующее:
TSearchRec = record
Time: Integer;
. . . .
Time contains the time stamp of the file. This is a DOS date-and-time stamp. It can be converted to a TDateTime value using FileDateToDateTime.

Чего и Вам желаю.
Не исключено, что в D3 был введен тип type TFileTime = integer или что-то типа того. Если есть исходники - советую посмотреть.

To: SergeyB & KSerg
Вопрос-то был не про WinAPI, а про чисто дельфийские функции, синтаксис которых сохранился аж со времен TP...


kserg@ukr.net   (2002-04-10 16:43:00) [2]

2Oleon
Когда-то я с этим тоже "бадался" причём на похожей задаче-делал файл-сканер.
Кое чё подзабыл, поэтому просто выложу кусок кода, на котр. виден общ.алгоритм работы.
Хочу только добавить, что время файла, когда "вырвешь" у винды надо конвертить из локального в системное, иначе были проблемы...


var
fn: WIN32_FILE_ATTRIBUTE_DATA;
lpLocalFileTime: TFileTime;
lpSystemTime: TSystemTime;
DateCr,TimeCr,DateWr,TimeWr: TDateTime;


// читаем атрибуты файла через функцию Win-API
strPcopy(C,sFile);
GetFileAttributesEx(C,GetFileExInfoStandard,@fn);


// определяем дату/время создания файла
FileTimeToLocalFileTime(fn.ftCreationTime, lpLocalFileTime);
FileTimeToSystemTime( lpLocalFileTime, lpSystemTime);
DateCr:= EncodeDate(lpSystemTime.wYear,lpSystemTime.wMonth,lpSystemTime.wDay);
TimeCr:= EncodeTime(lpSystemTime.wHour,lpSystemTime.wMinute,lpSystemTime.wSecond,lpSystemTime.wMilliseconds);

// определяем дату/время последней модификации
FileTimeToLocalFileTime(fn.ftLastWriteTime, lpLocalFileTime);
FileTimeToSystemTime( lpLocalFileTime, lpSystemTime);
DateWr:= EncodeDate(lpSystemTime.wYear,lpSystemTime.wMonth,lpSystemTime.wDay);
TimeWr:= EncodeTime(lpSystemTime.wHour,lpSystemTime.wMinute,lpSystemTime.wSecond,lpSystemTime.wMilliseconds);


Anatoly Podgoretsky   (2002-04-10 16:33:00) [3]

Сделай поиск


SergeyB   (2002-04-10 16:20:00) [4]

В windows.pas такое определение:

_FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
...
TFileTime = _FILETIME;


Наверх

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