Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.21;
Скачать: CL | DM;

Вниз

Время создания файла.   Найти похожие ветки 

 
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]

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



Страницы: 1 вся ветка

Текущий архив: 2002.03.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
4-67046
MARcoDEN
2002-01-19 12:28
2002.03.21
Как определить?


3-66734
gegc
2002-02-20 09:37
2002.03.21
Как и чем создать DBF чтобы он открывался в экселе и аксесе И чтобы руссие буквы были похожи на русские буквы? (BDE не предлагать!)


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


3-66741
EternalWonderer
2002-02-20 11:45
2002.03.21
Backup


14-66966
Snake
2002-02-06 19:04
2002.03.21
Здравствуйте, Мастера!