Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Searching files by date
Message
De
12/06/2004 05:58:03
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00912974
Message ID:
00912995
Vues:
12
>Hi, Is there a way to use VFP to search for files by a certain date? Win XP File Search can
>do this but how can I pass the result to VFP cursor?
>Thanks
>Steve

Steve,
VFP's filer.dll can do it with many more added capabilities. ie:
lcSTartDir = GETDIR()
* Get all dbf, cdx, fpt files from given start folder and its subfolders
* with No search text criteria
lnFiles = GetTree(lcStartDir,'*.dbf;*.cdx;*.fpt', 'myCursor', .t.)
Local array arrSizeTot[1]
Select sum(FileSize) from myCursor into array arrSizeTot
? trans(iif(_Tally>0,arrSizeTot,0))+' bytes in '+trans(lnFiles)+' files.'

Function GetTree
Lparameters tcStartDir,tcSkeleton,tcCursorName,;
  tlSubfolders,;
  tlWholeWords,tlIgnoreCase,tlSearchAnd,tcSearch1,tcSearch2,tcSearch3
Create Cursor (tcCursorName) ;
  (filepath c(50), filename c(20), ;
  FileSize i, fattr c(8), createtime T, lastacc T, lastwrite T)
Local oFiler, lnFound
oFiler = Createobject('filer.fileutil')
With oFiler
  .SearchPath = tcStartDir
  .FileExpression = tcSkeleton && Search for skeleton
  .Subfolder   = iif(tlSubfolders,1,0)  && Check subfolders
  .IgnoreCase  = iif(tlIgnoreCase,1,0)
  .WholeWords  = iif(tlWholeWords,1,0)
  .SearchAnd   = iif(tlSearchAnd,1,0)
  .SearchText1 = iif(empty(tcSearch1),"",tcSearch1)
  .SearchText2 = iif(empty(tcSearch2),"",tcSearch2)
  .SearchText3 = iif(empty(tcSearch3),"",tcSearch3)
  lnFound = .Find(0)
  For ix=1 To lnFound
    With .Files(ix)
      If !(Bittest(.Attr,4) And .Name = '.')
        Insert Into (tcCursorName) ;
          (filepath, filename, FileSize, fattr, createtime, lastacc, lastwrite)  ;
          values ;
          (.Path, .Name, .Size, Attr2Char(.Attr), ;
          Num2Time(.Datetime), Num2Time(.LastAccessTime), Num2Time(.LastWriteTime))
      Endif
    Endwith
  Endfor
Endwith
Return lnFound

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','_')
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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform