Newsgroup: it.comp.lang.visual-basic
Titolo: [Stupido...] Cancellare una directory

Scusate, lo so che č una domanda stupida, ma non riesco a raccapezzarmi:
Come faccio a cancellare un directory non vuota?
Io ho buttato giů questo codice, ma non va....
Private Sub Command1_Click()
    KillDir "c:\prova"
End Sub
Public Sub KillDir(str_dir As String)
    Dim xItem As String
    Dim xDir As String
    'On Error GoTo errore
    If Dir(str_dir & "\*.*", 31) <> "" Then
        CancellaDir (str_dir)
    Else
        RmDir str_dir
    End If
    MsgBox "Kill " + str_dir + " eseguito con successo!!!" + vbCrLf
    Exit Sub
errore:
    MsgBox "Errore n." & Err.Number & vbCrLf & Err.Description
End Sub
Public Function CancellaDir(path As String) As Boolean
    Dim xItem As String
    Dim xDir As String
    If Right(path, 1) <> "\" Then path = path & "\"
        On Error GoTo fine
            xItem = Dir(path, 31)
            xDir = path
            While xItem <> ""
                On Error GoTo continua
                If xItem <> "." And xItem <> ".." Then
                    If (GetAttr(xDir & xItem) And vbDirectory) = vbDirectory
Then
                        If CancellaDir(xDir & xItem) Then
                            RmDir (xDir & xItem)
                        End If
                    Else
                        Kill xDir & xItem
                    End If
                End If
continua:
                xItem = Dir
            Wend
        CancellaDir = True
        Exit Function
fine:
    CancellaDir = False
End Function
Help me please.
Grazie e ciao.

 Io ho buttato giù questo codice, ma non va....
Non è affatto stupido (semmai lo è, IMHO molto, chi ha pensato la Dir): Il
problema è dovuto alla Dir che non può essere ricorsiva, ovvero se fai una
Dir e la stai "scandagliando", un'ulteriore Dir farà perdere l'intera
sequenza residua della precedente. Vedi col codice che segue, adattato dal
tuo. L'ho provato e mi pare che funzioni:
Private Sub Command1_Click()
    KillDir "C:\Prova"
End Sub
Public Sub KillDir(str_dir As String)
    Dim xItem As String
    Dim xDir As String
    If Dir(str_dir & "\*.*", vbNormal + vbReadOnly + vbArchive + vbHidden +
vbSystem + vbDirectory) <> "" Then
        CancellaDir (str_dir)
    End If
    RmDir str_dir
    MsgBox "Kill " + str_dir + " eseguito con successo!!!" + vbCrLf
    Exit Sub
errore:
    MsgBox "Errore n." & Err.Number & vbCrLf & Err.Description
End Sub
Public Function CancellaDir(path As String) As Boolean
    Dim xItem As String
    Dim xDir As String
    Dim nfile As Long
    Dim attr As Variant
    CancellaDir = False
    xDir = path
    If Right(xDir, 1) <> "\" Then xDir = xDir & "\"
    ReDim vf(0 To 0) As String
    xItem = Dir(xDir & "*.*", vbNormal + vbReadOnly + vbArchive + vbHidden +
vbSystem + vbDirectory)
    Do
        Select Case xItem
            Case ""
                Exit Do
            Case ".", ".."
            Case Else
                ReDim Preserve vf(0 To UBound(vf) + 1)
                vf(UBound(vf)) = xItem
        End Select
        xItem = Dir
    Loop
    For nfile = 1 To UBound(vf)
        xItem = xDir & vf(nfile)
        attr = GetAttr(xItem)
        If (attr And vbDirectory) Then
            If CancellaDir(xItem) = True Then
                RmDir xItem
            Else
                Call MsgBox("Cartella non eliminabile: " & xItem, vbOKOnly +
vbExclamation)
                Exit Function
            End If
        Else
            Call SetAttr(xItem, vbNormal)
            Kill xItem
        End If
    Next nfile
    CancellaDir = True
End Function

 ha scritto nel messaggio
news:bs2tkp$93mb8$1...@ID-174464.news.uni-berlin.de...



--------------------------
 Public Sub KillDir(str_dir As String)
   On Local Error GoTo Errore
   Dim Fso, f
   Set Fso = CreateObject("Scripting.FileSystemObject")
   Fso.DeleteFolder str_dir, True
   ' True indica la che verranno cancellati
   ' anche i file e cartelle con attributo read only
Fine:
   Set f = Nothing
   Set Fso = Nothing
   Exit Sub
Errore:
   MsgBox Error
   Resume Fine
End Sub
----------------------
Ciao Giorgio

[*Giuseppe Marini* = 
giusepp...@katamail.com
 in
news:4fdFb.28716$
0w.14...@news2.tin.it
]
ha scritto senza quotare...

Giorgio Prx wrote:
<snip>
Domanda cretina: vi fa tanto schifo usare SHFileOperation?
Ciao,
Andrea


Domanda ancora più cretina: ma lo scripting engine (e sottolineo
*scripting*) emette feromoni così potenti?
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 *scripting*) emette feromoni così potenti?
Ritengo di poter suggerire ciò che considero più semplice e funzionale, poi
chi legge il thread sceglie.
Di sicuro i feromoni non sono un suggerimento valido.
Buon Natale
Giorgio