Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

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


Oleon   (2002-04-10 15:52) [0]

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



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

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

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



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

Сделай поиск



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

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);



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

> Если использовать 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...




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
6-69954           Turalyon              2002-02-11 16:49  2002.04.22  
Проблеммы с Socket


3-69672           roman_tutov           2002-04-03 12:54  2002.04.22  
компонент Table & memo поле


1-69764           kopachev              2002-04-08 16:43  2002.04.22  
Подкиньте идею


3-69659           Twister               2002-04-03 07:36  2002.04.22  
Отчет в MS Word


14-70021          KvORubin              2002-03-17 18:24  2002.04.22  
RichEdit - как в нём отобразить непечатаемые символы (как в M.Office)