Leagnus
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Я хотел закинуть в вектор все папки на ftp. Но или рекурсию, которую мы применяем для обычных папок, нельзя использовать на ftp, или я плужу. В написании использовал часть скрипта Криейтора для возвращения списка подпапок. Но на ftp _FTP_FindFileNext в отличие от FileFindNextFile не возвращает папки. Данный скрипт возвращает "Recursion level has been exceeded – AutoIt will quit to prevent stack overflow". Код: #include <Array.au3> #include <FTPEx.au3> static $server = '' static $username = '' static $pass = '' Local $h_NextFile, $Open, $Ftp_Conn, $a_File $Open = _FTP_Open('MyFTP Control') $Ftp_Conn = _FTP_Connect($Open, $server, $username, $pass) $s_CurFolder = _FTP_DirSetCurrent($Ftp_Conn, "/www/") Dim $a_Dirs = FtpDirsListToArray($Ftp_Conn, $s_CurFolder) _ArrayDisplay($a_Dirs) $FindClose = _FTP_FindFileClose($h_NextFile) $Ftpc = _FTP_Close($Open) Func FtpDirsListToArray($Ftp_Conn, $sPath, $sRootPath=1) Local $aSubDirsArr, $sFindNextFile, $sCurrentPath Dim $aRetArray $aRetArray = _FTP_ListToArray ($Ftp_Conn, 1) If $aRetArray[0] = 0 Then Return SetError(1, 0, -1) else For $a = 1 to $aRetArray[0] $aSubDirsArr = FtpDirsListToArray($Ftp_Conn, $aRetArray[$a], 0) If IsArray($aSubDirsArr) Then For $i = 1 To $aSubDirsArr[0] $aRetArray[0] += 1 ReDim $aRetArray[$aRetArray[0]+1] $aRetArray[$aRetArray[0]] = $aSubDirsArr[$i] Next EndIf Next EndIf Return $aRetArray EndFunc | Версия AutoIt – 3.3.1.5 beta (может, в этом проблема?). |