Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to retrive date created of a file ?
Message
From
13/05/2008 11:15:08
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
13/05/2008 07:17:52
Hee Lim Wang
Fantasy Software Enterprise
Malaysia
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01316606
Message ID:
01316660
Views:
12
>Hi all !
>how to check the date of a file created ?
Clear
oFileTimes = _GetFileTime(_samples+'data\employee.dbf')
If !oFileTimes.Error
  ? 'Create:',    oFileTimes.createTime,    oFileTimes.createMilli
  ? 'LastAccess:',oFileTimes.lastAccessTime,oFileTimes.lastAccessMilli
  ? 'Modified:',  oFileTimes.modifiedTime,  oFileTimes.modifiedMilli
Else
  ? 'Error'
Endif

Function _GetFileTime
  Lparameters tcFile
  ***************************************
  * 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 lcCreateTime, lcLastAccessTime, lcModifiedTime, lnMillis
  Local oFileTimes
  oFileTimes = CreateFileTimesReturnObject()

  lnhandle = CreateFile(@tcFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0) && Create handle
  If m.lnhandle > 0
    Store Replicate(Chr(0), 16) To m.lcCreateTime, m.lcLastAccessTime, m.lcModifiedTime
    oFileTimes.Error = (GetFileTime(m.lnhandle, ;
      @lcCreateTime, @lcLastAccessTime, @lcModifiedTime) = 0)
    =CloseHandle(m.lnhandle) && Close the handle
    If !oFileTimes.Error
      oFileTimes.createTime      = _DecodeFileTime(m.lcCreateTime,@lnMillis)
      oFileTimes.createMilli     = m.lnMillis
      oFileTimes.lastAccessTime  = _DecodeFileTime(m.lcLastAccessTime,@lnMillis)
      oFileTimes.lastAccessMilli = m.lnMillis
      oFileTimes.modifiedTime    = _DecodeFileTime(m.lcModifiedTime,@lnMillis)
      oFileTimes.modifiedMilli   = m.lnMillis
    Endif
  Else
    oFileTimes.Error = .T.
  Endif
  Return oFileTimes
Endfunc

Function _DecodeFileTime
  Lparameters tcFileTime, tnMillis
  Local lcLocalTime, lcSysTime, lnresult, ltTime
  ltTime = {/:}
  Store Replicate(Chr(0), 16) To m.lcLocalTime, m.lcSysTime
  If FileTimeToLocalFileTime(@tcFileTime, @lcLocalTime) # 0 And ;
      FileTimeToSystemTime(@lcLocalTime, @lcSysTime) # 0
    ltTime = Datetime(Str2Val(Substr(m.lcSysTime,1,2)), ;
      Str2Val(Substr(m.lcSysTime, 3,2)),;
      Str2Val(Substr(m.lcSysTime, 7,2)),;
      Str2Val(Substr(m.lcSysTime, 9,2)),;
      Str2Val(Substr(m.lcSysTime,11,2)),;
      Str2Val(Substr(m.lcSysTime,13,2)) )

    tnMillis = Str2Val(Substr(m.lcSysTime,15,2))
  Endif
  Return m.ltTime
Endfunc

Function Str2Val
  Lparameters tcStr
  Local lnVal
  lnVal = 0
  For ix=1 To Len(m.tcStr)
    lnVal = m.lnVal + Asc(Substr(m.tcStr,m.ix,1))*256^(m.ix-1)
  Endfor
  Return m.lnVal
Endfunc

Function CreateFileTimesReturnObject
  Local oReturn, lnSelect
  If Type('VERSION(5)') = 'N' And Version(5) >= 900
    oReturn = Createobject('empty')
    AddProperty(oReturn, 'error', .F.)
    AddProperty(oReturn, 'createTime')
    AddProperty(oReturn, 'createMilli')
    AddProperty(oReturn, 'lastAccessTime')
    AddProperty(oReturn, 'lastAccessMilli')
    AddProperty(oReturn, 'modifiedTime')
    AddProperty(oReturn, 'modifiedMilli')
  Else
    lnSelect = Select()
    Create Cursor tmp (Error L,;
      createTime L, createMilli L, ;
      lastAccessTime L, lastAccessMilli L, ;
      modifiedTime L, modifiedMilli L )
    Scatter Name oReturn Blank
    Use In 'tmp'
    Select (m.lnSelect)
  Endif
  Return oReturn
Endfunc
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Reply
Map
View

Click here to load this message in the networking platform