Newsgroup: it.comp.lang.visual-basic
Titolo: Dimensioni di una dir?

Qualcuno sa farmi un esmpio su come calcolare le dimensioni di una cartella
compreso tutte le sottodir?
Ciao Franco
--
Contribuisci anche tu:
http://www.thehungersite.com

...


 Usa l'oggetto folder e la proprietà size!!


...


 Vuoi anche l'esempio su come fare la funzine ricorsiva?
Forse ne trovi qualcuno tra gli esempi della guida.
Temo non sia possibile fare una funzione ricorsiva in quanto
"Dir" non ammette la ricorsione, tra l'altro generalmente poco
raccomandabile in Visual Basic a causa della particolare
gestione dello stack. Converra` quindi, in questo caso, usare
un array.
--
Ciao.
Maurizio

 Qualcuno sa farmi un esmpio su come calcolare le dimensioni
di una cartella compreso tutte le sottodir?
Potresti usare "Microsoft Scripting Runtime" (scrrun.dll):
    Dim fso As Scripting.FileSystemObject
    Set fso = New Scripting.FileSystemObject
    With fso.GetFolder("C:\Programmi")
      Debug.Print .Path
      If Not .IsRootFolder _
        Then Debug.Print _
            Format$(.Size / (1024 ^ 2), "Standard") _
          ; Spc(1); "MB"
    End With
    Set fso = Nothing
--
Ciao.
Maurizio

un array.
Che sia poco raccomandabile non ne dubito, ma non ho capito perchè non è
possibile: sbaglio o con dir si può rilevare anche la presenza di una
directory oltre che di un file?




 non ho capito perchè non è possibile
Dalla guida di Visual Basic:
"Funzione Dir
[...]
Non è possibile tuttavia chiamare la funzione Dir in modo
ricorsivo."
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 Scusa, ma questo non equivale esattamente a usare l'oggetto
folder?
Occhio alla sequenza dei messaggi, almeno come li vedo io: ho
risposto direttamente a olmof e, come vedi qui sopra, non
c'era menzione del suo rifiuto/impossibilita` di usare
l'oggetto folder.
Ma anche se fosse... di quale oggetto folder parliamo? io,
evidentemente, di quello del FileSystemObject di "Microsoft
Scripting Runtime", e olmof?
olmof risponde:
"Scusa non ho specificato che uso VB 4.0 e quindi l'oggetto
folder non c'è."
a te che gli dici:
"Usa l'oggetto folder e la proprietà size!!".
Anch'io uso VB4 e non ho quest'oggetto folder di cui parlate.
Quindi, se mi serve, uso quello che c'e` in scrrun.dll. Di
piu`... non so;-)


ricorsivo."
Urka, niente meno che la guida! Ho capito cosa vuoi dire, mi sono espresso
male io: intendevo una cosa di questo genere:
mi metto sulla root directory e cerco una sottodirectory, se la trovo
imposto il path su quella sottodirectory e cerco un'altra sottodir. finchè
non ne trovo neanche una: a quel punto sommo le dimensioni dei vari file,
torno su di un livello reimpostando il path e cerco la sottodir. successiva
(ovviamente in questo caso dovrei tenere traccia di tutte le sottodir.
analizzate: è un po' complicato e molto brutto ma si può fare). Così
dovrebbe funzionare, no?

piu`... non so;-)
Io uso vb6 e l'oggetto folder lo creo con
createobject("scripting.filesystemobject") e poi usando il metodo getfolder,
e ovviamente dev'essere lo stesso che c'è in scrrun.dll. Quindi, se ho
capito bene, probabilmente l'oggetto folder c'è anche in vb4, solo che non è
documentato nell'msdn come oggetto essendo relegato in quella dll. Però non
ho mai usato vb4, quindi potrei anche aver detto una stronzata (non sarebbe
la prima volta! :-))) )

 (ovviamente in questo caso dovrei tenere traccia di tutte le
sottodir. analizzate: č un po' complicato e molto brutto ma si
puň fare). Cosě dovrebbe funzionare, no?
Forse complicato. Brutto no, anche se e` un concetto relativo.
E` esattamente cio` che intendevo quando scrivevo: "Converra`
quindi, in questo caso, usare un array." Credo ci sia un
esempio sul Sito comune: 
http://www.murialdo.it/it_lang_vb
