Maza Faka
Цитата:
Можно конечно, использовать структуры функции взятых с этих же библиотек:
Код:
#include <Array.au3> ;Только для показа массива
$RetArr = ReturnEmptyDirs("c:\")
_ArrayDisplay($RetArr)
Func ReturnEmptyDirs($sPath)
Local $RetArray[1], $EmptyDirsArr, $FindNextFile, $CurrentPath, $CheckEmptyDir
While StringRight($sPath, 1) = "\"
$sPath = StringTrimRight($sPath, 1)
WEnd
Local $FindFirstFile = FileFindFirstFile($sPath & "\*.*")
If @error = 1 Then Return SetError(1, 0, -1)
While 1
$FindNextFile = FileFindNextFile($FindFirstFile)
If @error = 1 Then ExitLoop
$CurrentPath = $sPath & "\" & $FindNextFile
If StringInStr(FileGetAttrib($CurrentPath), "D") Then
$CheckEmptyDir = FileFindFirstFile($CurrentPath & "\*.*")
FileClose($CheckEmptyDir)
If $CheckEmptyDir = -1 Then
ReDim $RetArray[UBound($RetArray)+1]
$RetArray[UBound($RetArray)-1] = $CurrentPath
Else
$EmptyDirsArr = ReturnEmptyDirs($CurrentPath)
If IsArray($EmptyDirsArr) Then
For $i = 1 To UBound($EmptyDirsArr)-1
ReDim $RetArray[UBound($RetArray)+1]
$RetArray[UBound($RetArray)-1] = $EmptyDirsArr[$i]
Next
EndIf
EndIf
EndIf
WEnd
FileClose($FindFirstFile)
$RetArray[0] = UBound($RetArray)-1
Return $RetArray
EndFunc
Цитата:
а нельзя ли без них?
Можно конечно, использовать структуры функции взятых с этих же библиотек:
Код:
#include <Array.au3> ;Только для показа массива
$RetArr = ReturnEmptyDirs("c:\")
_ArrayDisplay($RetArr)
Func ReturnEmptyDirs($sPath)
Local $RetArray[1], $EmptyDirsArr, $FindNextFile, $CurrentPath, $CheckEmptyDir
While StringRight($sPath, 1) = "\"
$sPath = StringTrimRight($sPath, 1)
WEnd
Local $FindFirstFile = FileFindFirstFile($sPath & "\*.*")
If @error = 1 Then Return SetError(1, 0, -1)
While 1
$FindNextFile = FileFindNextFile($FindFirstFile)
If @error = 1 Then ExitLoop
$CurrentPath = $sPath & "\" & $FindNextFile
If StringInStr(FileGetAttrib($CurrentPath), "D") Then
$CheckEmptyDir = FileFindFirstFile($CurrentPath & "\*.*")
FileClose($CheckEmptyDir)
If $CheckEmptyDir = -1 Then
ReDim $RetArray[UBound($RetArray)+1]
$RetArray[UBound($RetArray)-1] = $CurrentPath
Else
$EmptyDirsArr = ReturnEmptyDirs($CurrentPath)
If IsArray($EmptyDirsArr) Then
For $i = 1 To UBound($EmptyDirsArr)-1
ReDim $RetArray[UBound($RetArray)+1]
$RetArray[UBound($RetArray)-1] = $EmptyDirsArr[$i]
Next
EndIf
EndIf
EndIf
WEnd
FileClose($FindFirstFile)
$RetArray[0] = UBound($RetArray)-1
Return $RetArray
EndFunc