blackeangel
27-02-2017, 23:32
мне сделали такой код
Function DirList(Pth As String) As String()
Dim R() As String
Dim D() As String
Dim T() As String
sz& = 100
ReDim D(1 To sz&) As String
cD$ = Dir$(Pth + "\*.*", vbDirectory)
ptrD& = 0
Do
If cD$ = "" Then Exit Do
If cD$ <> "." And cD$ <> ".." Then
If GetAttr(Pth + "\" + cD$) And vbDirectory Then
ptrD& = ptrD& + 1
If ptrD& > sz& Then
sz& = sz& + 100
ReDim Preserve D(1 To sz&) As String
End If
D(ptrD&) = Pth + "\" + cD$
End If
End If
cD$ = Dir$()
Loop
sz& = 100
ReDim R(1 To 3, 1 To sz&) As String
cF$ = Dir$(Pth + "\*.*", vbNormal)
ptrF& = 0
Do
If cF$ = "" Then Exit Do
ptrF& = ptrF& + 1
If ptrF& > sz& Then
sz& = sz& + 100
ReDim Preserve R(1 To 3, 1 To sz&) As String
End If
R(1, ptrF&) = Pth + "\" + cF$
R(2, ptrF&) = Hex$(GetAttr(Pth + "\" + cF$))
R(3, ptrF&) = CStr(FileLen(Pth + "\" + cF$))
cF$ = Dir$()
Loop
For i& = 1 To ptrD&
cP$ = D(i&)
T = DirList(cP$)
For j& = 1 To UBound(T, 2)
ptrF& = ptrF& + 1
If ptrF& > sz& Then
sz& = sz& + 100
ReDim Preserve R(1 To 3, 1 To sz&) As String
End If
R(1, ptrF&) = T(1, j&)
R(2, ptrF&) = T(2, j&)
R(3, ptrF&) = T(3, j&)
Next j&
Erase T
Next i&
If ptrF& > 0 Then
ReDim Preserve R(1 To 3, 1 To ptrF&) As String
Else
ReDim R(1 To 3, 0 To 0) As String
End If
DirList = R
End Function
Sub Test()
Dim D() As String
D = DirList("C:\Program Files")
For i& = 1 To UBound(D, 2)
Debug.Print D(1, i&); " "; D(2, i&); " "; D(3, i&)
Next i&
End Sub
Но мне не надо чтобы в столбцах записывались атрибуты. Надо чтобы напротив папок в соседних столбцах записывалось лишь 0 0 0755. Что править надо?
А то в этом коде я не бум бум. А автор кода не хочет объяснять.
Помогите пожалуйста.
Все это было
как получить дерево файлов и папок в заданной дериктории? И все это в двумерный массив засунуть из 3х столбцов, в который если это папка в соседние столбцы дописывать 0 0 0755?
К такому вот виду, например:
system/app/AdupsFota 0 0 0755
system/app/AdupsFota/AdupsFota.apk
system/app/AdupsFota/arm 0 0 0755
system/app/AdupsFota/arm/AdupsFota.odex
system/app/AdupsFotaReboot 0 0 0755
system/app/AdupsFotaReboot/AdupsFotaReboot.apk
system/app/AdupsFotaReboot/arm 0 0 0755
system/app/AdupsFotaReboot/arm/AdupsFotaReboot.odex
system/app/ApplicationsProvider 0 0 0755
system/app/ApplicationsProvider/ApplicationsProvider.apk
system/app/ApplicationsProvider/arm 0 0 0755
system/app/ApplicationsProvider/arm/ApplicationsProvider.odex
system/app/AtciService 0 0 0755
system/app/AtciService/AtciService.apk
system/app/AtciService/arm 0 0 0755
system/app/AtciService/arm/AtciService.odex
system/app/AutoDialer 0 0 0755
system/app/AutoDialer/AutoDialer.apk
system/app/AutoDialer/arm 0 0 0755
system/app/AutoDialer/arm/AutoDialer.odex
system/app/BSPTelephonyDevTool 0 0 0755
system/app/BSPTelephonyDevTool/BSPTelephonyDevTool.apk
system/app/BSPTelephonyDevTool/arm 0 0 0755
system/app/BSPTelephonyDevTool/arm/BSPTelephonyDevTool.odex
system/app/BasicDreams 0 0 0755
system/app/BasicDreams/BasicDreams.apk
system/app/BasicDreams/arm 0 0 0755
system/app/BasicDreams/arm/BasicDreams.odex
system/app/BatteryWarning 0 0 0755
system/app/BatteryWarning/BatteryWarning.apk
system/app/BatteryWarning/arm 0 0 0755
system/app/BatteryWarning/arm/BatteryWarning.odex
system/app/Bluetooth 0 0 0755
system/app/Bluetooth/Bluetooth.apk
system/app/Bluetooth/arm 0 0 0755
system/app/Bluetooth/arm/Bluetooth.odex
system/app/Bluetooth/lib 0 0 755
system/app/Bluetooth/lib/arm 0 0 755
system/app/Bluetooth/lib/arm/libbluetooth_jni.so
system/app/Browser 0 0 755
system/app/Browser/Browser.apk
system/app/Browser/arm 0 0 0755
system/app/Browser/arm/Browser.odex
system/app/Calculator 0 0 0755
system/app/Calculator/Calculator.apk
system/app/Calculator/arm 0 0 0755
system/app/Calculator/arm/Calculator.odex
Ну или предложите свой вариант решения задачи
Function DirList(Pth As String) As String()
Dim R() As String
Dim D() As String
Dim T() As String
sz& = 100
ReDim D(1 To sz&) As String
cD$ = Dir$(Pth + "\*.*", vbDirectory)
ptrD& = 0
Do
If cD$ = "" Then Exit Do
If cD$ <> "." And cD$ <> ".." Then
If GetAttr(Pth + "\" + cD$) And vbDirectory Then
ptrD& = ptrD& + 1
If ptrD& > sz& Then
sz& = sz& + 100
ReDim Preserve D(1 To sz&) As String
End If
D(ptrD&) = Pth + "\" + cD$
End If
End If
cD$ = Dir$()
Loop
sz& = 100
ReDim R(1 To 3, 1 To sz&) As String
cF$ = Dir$(Pth + "\*.*", vbNormal)
ptrF& = 0
Do
If cF$ = "" Then Exit Do
ptrF& = ptrF& + 1
If ptrF& > sz& Then
sz& = sz& + 100
ReDim Preserve R(1 To 3, 1 To sz&) As String
End If
R(1, ptrF&) = Pth + "\" + cF$
R(2, ptrF&) = Hex$(GetAttr(Pth + "\" + cF$))
R(3, ptrF&) = CStr(FileLen(Pth + "\" + cF$))
cF$ = Dir$()
Loop
For i& = 1 To ptrD&
cP$ = D(i&)
T = DirList(cP$)
For j& = 1 To UBound(T, 2)
ptrF& = ptrF& + 1
If ptrF& > sz& Then
sz& = sz& + 100
ReDim Preserve R(1 To 3, 1 To sz&) As String
End If
R(1, ptrF&) = T(1, j&)
R(2, ptrF&) = T(2, j&)
R(3, ptrF&) = T(3, j&)
Next j&
Erase T
Next i&
If ptrF& > 0 Then
ReDim Preserve R(1 To 3, 1 To ptrF&) As String
Else
ReDim R(1 To 3, 0 To 0) As String
End If
DirList = R
End Function
Sub Test()
Dim D() As String
D = DirList("C:\Program Files")
For i& = 1 To UBound(D, 2)
Debug.Print D(1, i&); " "; D(2, i&); " "; D(3, i&)
Next i&
End Sub
Но мне не надо чтобы в столбцах записывались атрибуты. Надо чтобы напротив папок в соседних столбцах записывалось лишь 0 0 0755. Что править надо?
А то в этом коде я не бум бум. А автор кода не хочет объяснять.
Помогите пожалуйста.
Все это было
как получить дерево файлов и папок в заданной дериктории? И все это в двумерный массив засунуть из 3х столбцов, в который если это папка в соседние столбцы дописывать 0 0 0755?
К такому вот виду, например:
system/app/AdupsFota 0 0 0755
system/app/AdupsFota/AdupsFota.apk
system/app/AdupsFota/arm 0 0 0755
system/app/AdupsFota/arm/AdupsFota.odex
system/app/AdupsFotaReboot 0 0 0755
system/app/AdupsFotaReboot/AdupsFotaReboot.apk
system/app/AdupsFotaReboot/arm 0 0 0755
system/app/AdupsFotaReboot/arm/AdupsFotaReboot.odex
system/app/ApplicationsProvider 0 0 0755
system/app/ApplicationsProvider/ApplicationsProvider.apk
system/app/ApplicationsProvider/arm 0 0 0755
system/app/ApplicationsProvider/arm/ApplicationsProvider.odex
system/app/AtciService 0 0 0755
system/app/AtciService/AtciService.apk
system/app/AtciService/arm 0 0 0755
system/app/AtciService/arm/AtciService.odex
system/app/AutoDialer 0 0 0755
system/app/AutoDialer/AutoDialer.apk
system/app/AutoDialer/arm 0 0 0755
system/app/AutoDialer/arm/AutoDialer.odex
system/app/BSPTelephonyDevTool 0 0 0755
system/app/BSPTelephonyDevTool/BSPTelephonyDevTool.apk
system/app/BSPTelephonyDevTool/arm 0 0 0755
system/app/BSPTelephonyDevTool/arm/BSPTelephonyDevTool.odex
system/app/BasicDreams 0 0 0755
system/app/BasicDreams/BasicDreams.apk
system/app/BasicDreams/arm 0 0 0755
system/app/BasicDreams/arm/BasicDreams.odex
system/app/BatteryWarning 0 0 0755
system/app/BatteryWarning/BatteryWarning.apk
system/app/BatteryWarning/arm 0 0 0755
system/app/BatteryWarning/arm/BatteryWarning.odex
system/app/Bluetooth 0 0 0755
system/app/Bluetooth/Bluetooth.apk
system/app/Bluetooth/arm 0 0 0755
system/app/Bluetooth/arm/Bluetooth.odex
system/app/Bluetooth/lib 0 0 755
system/app/Bluetooth/lib/arm 0 0 755
system/app/Bluetooth/lib/arm/libbluetooth_jni.so
system/app/Browser 0 0 755
system/app/Browser/Browser.apk
system/app/Browser/arm 0 0 0755
system/app/Browser/arm/Browser.odex
system/app/Calculator 0 0 0755
system/app/Calculator/Calculator.apk
system/app/Calculator/arm 0 0 0755
system/app/Calculator/arm/Calculator.odex
Ну или предложите свой вариант решения задачи