LPARAMETERS laDirectory, lcMask
LOCAL cStruct, llResult, lnCount, fResult, lffHandle
IF This.OpenFtpConnection(This.cStartupFolder) && Open an FTP Handle
lcMask = lcMask + cNULL
* Dimension the array to store the directory
* [x, 1] = FileName
* [x, 2] = Alternate FileName
* [x, 3] = File Size
* [x, 4] = File Create Date
* [x, 5] = File Last Access Time
* [x, 6] = File Last Write Time
* [x, 7] = File Attributes
DIMENSION laDirectory [1, 7]
laDirectory [1, 1] = .F.
* This is for a FoxPro Quirk.
lcStruct = SPACE(319) && Allocate space for the returned structure
=This.BeforeGetFtpDirectoryArray(@laDirectory, lcMask)
* Get the first file or find out if
lffHandle = FtpFindFirstFile(This.nConnect_Handle, @lcMask, @lcStruct, 0, 0)
This.GetExtendedError()
IF lffHandle = 0 OR This.nResult_Code = ERROR_NO_MORE_FILES
=IIF(This.lMultiOperations,.T.,This.CloseFtpConnection()) && Close FTP Handle
RETURN .F.
ENDIF
* Parse out First File Information
=This.CrackFile(lcStruct, @laDirectory)
llResult = 1
DO WHILE This.nResult_Code != ERROR_NO_MORE_FILES AND llResult != 0
lcStruct = SPACE(319)
* Get next files
llResult = InternetFindNextFile(lffHandle, @lcStruct)
=This.GetExtendedError()
* If we got good information, go ahead and parse it
IF This.nResult_Code != ERROR_NO_MORE_FILES AND llResult != 0
=This.CrackFile(lcStruct, @laDirectory)
ENDIF
ENDDO
=This.AfterGetFtpDirectoryArray(laDirectory, lcMask,llResult)
=IIF(This.lMultiOperations,.T.,This.CloseFtpConnection()) && Close FTP Handle
ELSE
RETURN .F. && Unable to get FTP Connection
ENDIF
RETURN .T.