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




Вниз

Время создания файла. 


Di_wind   (2002-03-05 21:35) [0]

Уважаемые программисты, подскажите ход дальнейших размышлений.
Есть некий TSearchRec, в нем находяться несолько фалов нужно и получить дату создания этих фалов. Делаю так:

dosDate и dosTime типа word

FileTimeTodosdatetime(TSearchRec.FindData.ftLastWriteTime,dostime,dosdate);
как преобразовать dosTime в человеческий вид. В хлпе нашел вот что :
Bits Contents
0-4 Second divided by 2
5-10 Minute (0-59)
11-15 Hour (0-23 on a 24-hour clock)
Но все равно получаеться лажа...



lipskiy   (2002-03-06 01:58) [1]

Откопал в своих проектах. Два куска - в одном поиск файлов через FindFirst - FindNext с выдачей времени файла в стринговом формате, в другом куске (функция) конвертация в удобоворимый вид.

var
srec:tsearchrec;
timedata:TWin32FindData;
filetime:tfiletime;
systime:Tsystemtime;
Time,buf:int64;

begin
findfirst(...,faanyfile,srec);
...
timedata:=srec.FindData;
FileTimeToLocalFileTime(timedata.ftLastWriteTime,filetime);
buf:= filetime.dwHighDateTime;
buf:= buf shl 32;
Time:= inttostr(buf + filetime.dwLowDateTime);
end;

//##############################################################################
function TForm1.ConvertTime(InTime:string):string;
//##############################################################################
var
Time:int64;
filetime:tfiletime;
systime:Tsystemtime;
dy,mt,yr,hr,mn,sc:string;
begin
if InTime="0" then
begin
result:= "";
exit;
end;
Time:= strtoint64(InTime);
filetime.dwLowDateTime:= (Time and $ffffffff);
filetime.dwHighDateTime:= (Time shr 32 and $ffffffff);
FileTimeToSystemTime(filetime,systime);
if systime.wDay < 10 then dy:= "0"+inttostr(systime.wDay) else dy:= inttostr(systime.wDay);
if systime.wMonth < 10 then mt:= "0"+inttostr(systime.wMonth) else mt:= inttostr(systime.wMonth);
if systime.wHour < 10 then hr:= "0"+inttostr(systime.wHour) else hr:= inttostr(systime.wHour);
if systime.wMinute < 10 then mn:= "0"+inttostr(systime.wMinute) else mn:= inttostr(systime.wMinute);
if systime.wSecond < 10 then sc:= "0"+inttostr(systime.wSecond) else sc:= inttostr(systime.wSecond);
result:= Dy+"."+Mt+"."+inttostr(systime.wYear)+" "+Hr+":"+Mn+":"+Sc;
end;



Di_wind   (2002-03-06 21:20) [2]

Благодарю. Разобрался.




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




Наверх





Память: 0.72 MB
Время: 0.032 c
1-66844           Techno                2002-03-05 11:27  2002.03.21  
Настройка принтера


1-66923           Agent Smith           2002-03-06 17:44  2002.03.21  
Архивы...


14-66970          Anics                 2002-02-06 08:51  2002.03.21  
Кто знает как это сделать ?


3-66799           perov                 2002-02-20 10:33  2002.03.21  
связывание таблиц


7-67033           CORSAiR               2001-12-17 19:59  2002.03.21  
Клонирование дисков.. НО !