Gestione delle sottodirectory

di il
4 risposte

Gestione delle sottodirectory

Cioa a tutti
mi servirebbe uno script che legge le date dei file e confrontandole con una data certa le sposta.
ho fatto lo script e funziona ma non riesco a scendere in profondità nelle sottodirectory.
Qualcuno sa dirmi come fare?
Grazie
Ciao a tutti

4 Risposte

  • Re: Gestione delle sottodirectory

    Per scendere in profondità nelle sottodirectory devi usare una funzione ricorsiva. La funzione ricorsiva non è altro che una funzione che chiama sè stessa.
    Finchè la funzione non viene chiusa, e continua a richiamarsi, si crea un'area di memoria detta stack, a strati. Quando la funzione viene chiusa e restituisce un risultato utile alla chiamante, si scatena la restituzione dei risultati a tutti quelli sopra, chiudendo gli stack.
    Ti faccio un esempio pratico, tipico: il fattoriale.

    Se volessi sapere che risultato da il fattoriale di 5, come posso fare?
    Dovrei utilizzare una funzione ricorsiva, che si richiama fino a quando il valore passato è 1
    Ecco come:

    Function fattoriale(n as integer)
    if n =1 then
    fattoriale = 1
    exit sub
    end if
    if fattoriale > 1 then
    fattoriale = n * fattoriale(n-1)
    end if
    end function

    e chiamo la funzione
    risultato=fattoriale(5)
    Cosa accade in pratica ???
    La funzione continua a richiamarsi in questo modo:
    fattoriale = 5 * fattoriale(5-1)
    fattoriale = 4 * fattoriale(4-1)
    fattoriale = 3 * fattoriale(3-1)
    fattoriale = 2 * fattoriale(2-1)
    fattoriale = 1 (vedi che nella funzione se passo 1 ottengo 1 come risultato)
    Adesso la ricorsione funziona al contario: salendo fino alla prima chiamata, posso restituire ai chiamanti il risultato generato dalla funzione chiamata, dato che l'ultima chiamata ha prodotto un risulatato utili, cioè 1.
    Passo 1 alla penultima
    Fattoriale = 2 *1 che a sua volta genera un risultato utile per la precedente Fattoriale = 3 * 2 che a sua volta passa il valore alla chiamante Fattoriale = 4 * 6, passando continuamente il valore alla chimata con la quale "SONO IN DEBITO"!

    E ottengo 120, cioè 5!.
    Ti è chiaro? La stessa cosa devi fare per le sottodirectory. Se hai bisogno dello script, fammi sapere.
    Bye




    fabio
  • Re: Gestione delle sottodirectory

    Grazie
    adesso ci provo magari se puoi, fare un esempio più vicino al problema saresti magico.
    Grazie
  • Re: Gestione delle sottodirectory

    Function albero(firstfolder As Folder) As Boolean


    For Each file In firstfolder.Files
    'scorri i file della directory
    next file


    For Each subfolderX In firstfolder.SubFolders
    ok = albero(subfolderX)
    Next subfolderX

    End Function

    Commenti:
    Allora, vediamo da dove cominciare.
    Immagina di trovarti sotto c:\ dove hai 3 directory: a,b,c
    a però presenta altre 2 sottodirectory a1, a2.
    Iniziamo a vedere il codice
    L'esecuzione parte: siamo in c:\: vediamo tutti i files sotto questa root, poi passiamo al ciclo: per ogni directory sotto stante c, richiama la stessa funzione e rifai il ciclo. Il programma arriva nel ciclo di for alla prima directory a: la funzione richiama se stessa (RICORSIONE,appunto) passando a come parametro. Intanto si è creato lo stack, su c:\a. Inizia il ciclo dentro a, si passa ad a1, poi a2, e si torna alla chiamta superiore, quella dove abbiamo passato come parametro a. Non ci sono più sottodirectory per a, allora si esce dalla funzione, e si torna al punto dove a è stata attivata la ricorsione, ricordi? nel ciclo di for a c:\a, directory successiva...e così via.
    Ogni volta che si crea lo stack, il codice si ferma nel punto di chiamata della funzione, e ci ritorna solo quando ha finito di processare la funzione chiamata, restituendo i valori generati.
    Nel caso del Fattoriale, è la stessa cosa. Solo che viene ritornato un valore, e restituito al chiamante, che a sua volta lo passa al chiamante "creditore "...
    E così via

    Spero di essermi spiegato
    Buon lavoro

    fabio
  • Re: Gestione delle sottodirectory

    Hai provato il mio gioco BubbleX? E' tra i migliori su http://www.risorseflash.i
    Try it !!!!
    Spero ti piaccia!

    fabio
Devi accedere o registrarti per scrivere nel forum
4 risposte