Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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]

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



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

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

Наверх





Память: 0.45 MB
Время: 0.028 c
3-66806
Jony
2002-02-19 10:22
2002.03.21
Маразмы с DBGrid


3-66797
Ross
2002-02-23 15:32
2002.03.21
Варианты передачи данных в Word


1-66851
Dok_3D
2002-03-05 12:46
2002.03.21
Как уничтожить OLE-объект ?


3-66774
amamed_3071
2002-02-21 14:57
2002.03.21
Как увеличит TimeOut в AdoConnection


7-67028
End
2001-12-19 15:48
2002.03.21
PChar --> String





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский