Форум: "Основная";
Текущий архив: 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...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c