Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Getting file attributes
Message
From
09/09/2006 03:44:46
 
 
To
08/09/2006 13:05:55
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Miscellaneous
Thread ID:
01152363
Message ID:
01152524
Views:
20
thanks Cetin,
It is what I was looking for , but I cannot get info by an open table...

>>how can I get informations about a file size and the date of creation ?
>>I want to test if there were any changes in the file...
>>thank you
>>Alessio
>
>Alessio,
>Do you mean 'create/modified/accessed' dates seen in explorer when you right click on file? If so you can get that info either with winAPI or VFP's filer.dll.
>
>1)WinAPI
>
>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
>
>
>2) Filer.dll
>
>
>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:
>do form home()+'tools\filer\filer'
>
>Cetin
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform