FUNCAO GETATTR

USUARIO.EXCLUIDOS 27/07/2005 14:44:28
#96235
Private Sub ListSubDirs(Path As String)
' sub rotina que passa pasta por pasta do sistema de dados

Dim i As Integer
Dim count As Integer
Dim Pasta As String
Dim PastaOriginal As String
Dim D() As String

If Mid$(Path, Len(Path), Len(Path)) <> "\" Then
Path = Path & "\"
End If
PastaOriginal = Path
Pasta = Dir(PastaOriginal, vbDirectory)
count = 0
On Error Resume Next
Do While Trim$(Pasta) <> ""
If Pasta <> "." And Pasta <> ".." Then
If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
If (count Mod 5) = 0 Then
ReDim Preserve D(count + 5)

End If
count = count + 1
D(count) = Path & Pasta
End If
End If
Pasta = Dir()
Loop

For i = 1 To count
MsgBox (D(i))
ListSubDirs D(i) & "\"
Next

End Sub



esse codigo mostra pasta por pasta , vez por vez, em uma msgbox, ......mas tm uma coiza sem logica, ele nao acha o diretorio arquivos de programas, alguem tm ideia o pq::???
USUARIO.EXCLUIDOS 27/07/2005 19:21:53
#96304
Resposta escolhida
A função GetAtrr traz os atributos de um arquivo ou diretório. Um arquivo ou diretório podem ter mais de um atributo. Um diretório pode ter os atributos vbDirectory, vbReadOnly e vbHidden ligados, por isso seu teste condicional esta falhando.

Faça a seguinte correção:
Troque: If GetAttr(PastaOriginal + Pasta) = vbDirectory Then
Por: If GetAttr(PastaOriginal + Pasta) And vbDirectory = vbDirectory Then

Para entender melhor o funcionamento lógico de .... And vbDirectory leia esses dois artigos.
Transformando um longo em inteiro sem ocorrência de overflow
Sistemas numéricos
USUARIO.EXCLUIDOS 28/07/2005 11:19:04
#96383
Porra agora eu tiro meu chapeu pra voce!!! parabens !!!! eh isso , jamais q eu ia acha isso !!! eh isso ae!!!!!!! vlws cara !!!! sou muito grato!!!! e PARABENS PORRA!!! essa eu nao espereva falowsssssss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas