>>lparameters tcFileName >>*************************************** >>* Declarations >>*************************************** >>DECLARE SHORT GetFileTime IN Win32API; >> INTEGER hFile, STRING @lpftCreation,; >> STRING @lpftLastAccess, STRING @lpftLastWrite >> >>DECLARE SHORT FileTimeToSystemTime IN Win32API; >> STRING @lpft, STRING @lpst >> >>DECLARE SHORT FileTimeToLocalFileTime IN Win32API; >> STRING @lpFileTime, STRING @lpLocalFileTime >> >>Declare INTEGER CreateFile IN Win32API; >> STRING @lpFileName, INTEGER dwDesiredAccess,; >> INTEGER dwShareMode, STRING @lpSecurityAttributes,; >> INTEGER dwCreationDistribution, INTEGER dwFlagsAndAttributes,; >> INTEGER hTemplateFile >> >>Declare SHORT CloseHandle IN Win32API; >> INTEGER hObject >> >>#define GENERIC_READ 0x80000000 >>#Define GENERIC_WRITE 0x40000000 >>#define FILE_SHARE_READ 0x00000001 >>#Define FILE_SHARE_WRITE 0x00000002 >>#Define OPEN_EXISTING 0x00000003 >>*************************************** >>* Declarations >>*************************************** >> >>Local lcFileName, ltCreateTime, ltLastAccessTime, ltModifiedTime >>Local lnCreateMillis, lnLastAccessMillis, lnModifiedMillis >> >>_GetFileTime(tcFileName, ; >> @ltCreateTime, @ltLastAccessTime, @ltModifiedTime, ; >> @lnCreateMillis, @lnLastAccessMillis, @lnModifiedMillis) >>? 'Created :', ltCreateTime, lnCreateMillis >>? 'Last Access :', ltLastAccessTime, lnLastAccessMillis >>? 'Modified :', ltModifiedTime, lnModifiedMillis >> >>Function _GetFileTime >>Lparameters tcFile, ttCreated, ttLastAccess, ttModified, ; >>tnCreatedMillis, tnLastAccessMillis, tnModifiedMillis >>Local lcCreateTime, lcLastAccessTime, lcModifiedTime, lnMillis >>lnhandle = CreateFile(@tcFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0) && Create handle >>If lnhandle > 0 >> Store REPLICATE(CHR(0), 16) to lcCreateTime, lcLastAccessTime, lcModifiedTime >> lnresult = GetFileTime(lnhandle, @lcCreateTime, @lcLastAccessTime, @lcModifiedTime) >> =CloseHandle(lnhandle) && Close the handle >> if lnresult # 0 >> ttCreated = _DecodeFileTime(lcCreateTime,@tnCreatedMillis) >> ttLastAccess = _DecodeFileTime(lcLastAccessTime,@tnLastAccessMillis) >> ttModified = _DecodeFileTime(lcModifiedTime,@tnModifiedMillis) >> endif >>else >> Messagebox("Cannot create handle to file!") >>endif >> >>function _DecodeFileTime >>lparameters tcFileTime, tnMillis >>local lcLocalTime, lcSysTime, lnResult, ltTime >>ltTime = {/:} >>Store REPLICATE(CHR(0), 16) to lcLocalTime, lcSysTime >>if FileTimeToLocalFileTime(@tcfiletime, @lcLocalTime) # 0 and ; >> FileTimeToSystemTime(@lcLocalTime, @lcSysTime) # 0 >> ltTime = Datetime(Str2Val(substr(lcSysTime,1,2)), ; >> Str2Val(substr(lcSysTime, 3,2)),; >> Str2Val(substr(lcSysTime, 7,2)),; >> Str2Val(substr(lcSysTime, 9,2)),; >> Str2Val(substr(lcSysTime,11,2)),; >> Str2Val(substr(lcSysTime,13,2)) ) >> >> tnMillis = Str2Val(substr(lcSysTime,15,2)) >>endif >>Return ltTime >> >>Function Str2Val >>Lparameters tcStr >>Local lnVal >>lnVal = 0 >>for ix=1 to len(tcStr) >> lnVal = lnVal + asc(substr(tcStr,ix,1))*256^(ix-1) >>endfor >>return lnVal >>>>
>>clear >>myFileInfo("c:\my path\myFile*.*") && multiple skeletons are possible, can search subdirs etc >> >>FUNCTION myFileInfo >>LPARAMETERS tcFileName >>Local oFiler, ix >>oFiler = Createobject('filer.fileutil') >>With oFiler >> .SearchPath = JUSTPATH(m.tcFileName) >> .FileExpression = JUSTFNAME(m.tcFileName) && Search for skeleton with wildcards >> For ix=1 To .Find(0) >> With .Files(m.ix) >> If !(Bittest(.Attr,4) And .Name = '.') >> ? .Path, .Name, .Size, Attr2Char(.Attr), ; >> Num2Time(.Datetime), Num2Time(.LastAccessTime), Num2Time(.LastWriteTime) >> Endif >> Endwith >> Endfor >>Endwith >> >>Function Num2Time >>Lparameters tnFloat >>Return Dtot({^1899/12/30}+Int(tnFloat))+86400*(tnFloat-Int(tnFloat)) >> >>Function Attr2Char >>Lparameters tnAttr >>Return ; >> IIF(Bittest(tnAttr,0),'RO','RW')+; >> IIF(Bittest(tnAttr,1),'H','_')+; >> IIF(Bittest(tnAttr,2),'S','_')+; >> IIF(Bittest(tnAttr,4),'D','_')+; >> IIF(Bittest(tnAttr,5),'A','_')+; >> IIF(Bittest(tnAttr,6),'E','_')+; >> IIF(Bittest(tnAttr,7),'N','_') >>>>Filer.dll is also used by: