FileFindXxxx
Searches for files by name and attribute and get file properties
Syntax :
FileFindFirst( <cFileNameMask>, @<pFFindInfo>[, <nAttr> ] ) -> <lFound>
FileFindNext( <pFFindInfo> ) -> <lFound>
FileFindName( <pFFindInfo> ) -> <cFileName>
FileFindAttr( <pFFindInfo> ) -> <nAttr>
FileFindSize( <pFFindInfo> ) -> <nSize>
FileFindDate( <pFFindInfo> ) -> <dDate>
FileFindTime( <pFFindInfo> ) -> <cTime>
Arguments
<cFileNameMask> : A file name including its path and drive designation. It may contain wildcards.
<pFFindInfo> : A pointer for an internal data structure to hold file(s) info
<nAttr> : The file attribute that corresponds to the ones described in the table on the next page. The default value is 0.
Coding the File Attribute
----------------------------------------------------------------
Value Symb. constants Assigned attribute
----------- ---------------- -----------------------------------
0 FA_NORMAL
1 FA_READONLY READ ONLY (Read-only)
2 FA_HIDDEN HIDDEN (Hidden files)
4 FA_SYSTEM SYSTEM (System files)
8 FA_VOLUME VOLUME (Name of a floppy/hard disk)
16 FA_DIRECTORY DIR (Directory)
32 FA_ARCHIVE ARCHIVE (Changes since last backup)
----------------------------------------------------------------
Returns
<lFound> : A logical value indicate file existence
<cFileName> : Name of file found by FileFindFirst() or FileFindNext() (without drive/dir)
<nAttr> : A numeric value indicate attribute info of file
<nSize> : A numeric value indicate size of file
<dDate> : A date value indicate date of file
<cTime> : A character value indicate time of file (as “HH:MM:SS”)
Description
FileFindXxxx functions provides a set of info on a set of file.
Calling first FileFindFirst() build an internal data structure ( probably an array like returned by Directory() ). And then calling other FileFindXxxx functions returns individual file info for last file found.
This function set look like FileSeek() function. For more info look at it.
Note
Internal Data Buffer : Every FileFindXxxx() function uses internal data structure <pFFindInfo>. For further using this variable should be passed by reference in FileFindFirst(). May be useful release this buffer by go out of scope or be explicitly release by freeing <pFFindInfo> variable a way like this:
<pFFindInfo> := NIL
Example
PROC TestFFs()
LOCAL pFFInfo
LOCAL nFileNo := 0
LOCAL lContinue := FileFindFirst( '*.*', @pFFInfo )
WHIL lContinue
? PAD( ++nFileNo, 3),;
PAD( FileFindName( pFFInfo ), 23 ),;
FileFindAttr( pFFInfo ),;
FileFindSize( pFFInfo ),;
FileFindDate( pFFInfo ),;
FileFindTime( pFFInfo )
lContinue := FileFindNext( pFFInfo )
END
RETU // TestFFs()
Seealso
Directory(), FileSeek(), FileAttr(), FileDate(), FileSize(), FileTime(), HB_FileMatch()