Newsgroup: it.comp.lang.visual-basic
Titolo: come ottenere un elenco di files e directory?

Ho la necessita' di  scrivere del codice VB per ottenere l' elenco dei files
e delle cartelle contenute in una directory a scelta, compresi i files
nascosti, il tutto sotto forma di elenco.
Ho usato la funzione DIR ma mi pare che non riesca a mostrare i files che
hanno due attributi attivi  contemporaneamente (esempio: di sistema E
nascosto), ho tentato anche di invocare il 
command.com
 ( l' ideale sarebbe ,
prendendo ad esempio la cartella C:\miacartella, eseguire un comando dos del
tipo :
        C:\> dir /a C:\miacartella>C:\windows\desktop\lista.txt
che nel Visual Basic per DOS era una fesseria (grazie allo statement SHELL)
ma qui proprio non so che pesci pigliare...
saluti ,
S. J.

 nascosto)
Come no?
Prova a postare un po' di codice.
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

 Prova a postare un po' di codice.
hai ragione. avevo furia...
in questa prova su di un form esiste una casella di testo in cui inserire il
path (text2) ed una, multiline, in cui compare l' elenco di archivi e
cartelle (txtDir)
ecco qui il codice  :
Private Sub fileBrowse()
'On Error Resume Next
Dim perc As String, archivio As String
perc = Text2.Text
'perc = Right(DataIn, Len(DataIn) - 4)
archivio = Dir(perc, param)
txtDir = archivio
Do While archivio <> ""
   If archivio <> "." And archivio <> ".." Then
      If (GetAttr(perc & archivio) And vbDirectory) = vbDirectory Then
         Debug.Print archivio
      End If
   End If
   archivio = Dir
txtDir.Text = txtDir.Text & vbCrLf & archivio
   Loop
End Sub
secondo la documentazione msdn la funzione dir accetta i seguenti argomenti:
vbNormal         0      (Default) Specifies files with no attributes.
vbReadOnly     1       Specifies read-only files in addition to files with
no attributes.
vbHidden         2       Specifies hidden files in addition to files with no
attributes.
VbSystem        4       Specifies system files in addition to files with no
attributes.
vbVolume        8       Specifies volume label; if any other attributed is
specified, vbVolume is ignored.
vbDirectory     16      Specifies directories or folders in addition to
files with no attributes
eppure non riesco a trovare il modo di ottenere la lista di TUTTI  i files,
ma solo di quelli che hanno l' attributo specificato dall' argomento che
passo alla funzione, E SOLO QUELLO: se ne hanno 2 sono ignorati, il che
porta a non visualizzare mai ad es, quelli che hanno gli atributi +h +s
ho provato con shellexecute ad invocare il 
COMMAND.COM
, ma non riesco a fare
niente oltre che aprire la finestra ms-dos.

 porta a non visualizzare mai ad es, quelli che hanno gli atributi +h +s
prova ad usare piu' parametri  :
archivio = Dir(perc, vbNormal Or vbHidden Or vbReadOnly Or vbSystem Or
vbDirectory)
Ciao
Enrico

...


ringrazio tutti per la vostra cortesia e sollecitudine: avevo gia' tentato
la strada dei parametri, ma come e' mio solito, ci avevo infilato un errore
scemo: usavo l' enunciato AND anziche' l' OR.
Spero di essere perdonabile, sono un niubbone (meno di un anno di progr,
perlopiu' DOS)
ad ogni modo nel frattempo avevo trovato una scappatoia, ricorrendo ai batch
files.
In pratica creo un file batch che esegue il comando voluto, passa l' output
ad un file di testo, e poi apre il file risultante per recuperare i dati
(che includono cosi' anche degli extra: le dimensioni dei singoli files ed i
nomi DOS, inoltre le cartelle si distinguono da eventuali files senza
estensione grazie all' annotazione <DIR>.
Per la cronaca accludo il codice, d approfitto per ringraziarvi nuovamente.
Private Sub fileBrowse()
On Error Resume Next
Dim perc As String
'perc e' il path che punta alla directory voluta
perc = Right(DataIn, Len(DataIn) - 4)
'creo il file batch
Open "C:\windows\command\browser.bat" For Output As #2
Print #2, "dir /A " & perc & ">C:\windows\listing.txt"
Close 2
'eseguo il file batch, elegantemente nascosto
ShellExecute hwnd, vbNullString, "browser.bat", vbNullString,
"C:\windows\command", SW_HIDE
'attendo che il file contenente l' output sia chiuso
ret = FindFirstChangeNotification("C:\windows\command", False,
FILE_NOTIFY_CHANGE_LAST_WRITE)
il timeout (20 secondi) e' un po' lungo! cmq evita che si acceda ad un file
aperto
WaitForSingleObject ret, 20000
'lettura del risultato
Open "C:\windows\listing.txt" For Input As #3
 While EOF(3) = False
  Line Input #3, riga
    'Invio dei dati
   WSock.senddata riga & Chr$(13) & Chr$(10)
   While fineInvio = False: DoEvents: Wend
   fineInvio = False
  Wend
Close 3
'elimina i files temporanei (non che sia necessario)
Kill "C:\windows\command\browser.bat"
Kill "C:\windows\listing.txt"
End Sub