Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB6] Questa è bella... baco di VB6?

    Sto cercando di fare una piccola applicazione che data una cartella di origine e una di destinazione nella cartella di destinazione (all'inizio vuota) mi ricrei la stessa gerarchia di cartelle dell'origine, es:

    Ho scritto una piccola procedura che almeno in teoria dovrebbe girare bene.

    Ve la riporto di seguito:

    Public Sub SondaCartella(D1 As DirListBox, D2 As DirListBox, P1 As String, P2 As String)
    Dim i As Integer
    D1.Path = P1
    D2.Path = P2
    For i = 0 To D1.ListCount - 1
    On Error GoTo Errore
    D2.Path = D2.Path & Mid(D1.List(i), InStrRev(D1.List(i), "\"))
    Torna:
    SondaCartella D1, D2, D1.List(i), D2.Path & Mid(D1.List(i), InStrRev(D1.List(i), "\"))
    D1.Path = P1
    D2.Path = P2
    On Error GoTo 0
    Next
    Exit Sub
    Errore:
    MkDir D2.Path & Mid(D1.List(i), InStrRev(D1.List(i), "\"))
    Err.Clear
    GoTo Torna
    End Sub


    Praticamente cosa fa? Mi porto appresso due oggetti DirListBox e i loro relativi Path allo stato attuale del livello.
    Impongo alla D2 il percorso di una cartella di D1, se genera errore vuol dire che la cartella in D2 non esiste e la crea. Vi faccio un esempio pratico:

    Nella cartella di origine ho la seguente struttura:

    Cartella1 -> Cartella2
    -> Cartella3
    Cartella4

    Dove Cartella1 e 4 si trovano nella root principale e cartella 2 e 3 nella cartella1.

    Come deve funzionare la procedura:
    Impone che il path di destinazione è uguale a destinazione\cartella1 ma ovviamente caccia errore ed esegue l'istruzione jolly, quella che crea la cartella che non esiste.
    Poi la procedura richiama se stessa ma ad un livello inferiore.
    Qui si impone il path di destinazione uguale a destinazione\cartella1\cartella2 e si ripete la stessa cosa di sopra.
    Richiamando nuovamente se stessa la procedura accade che nel for non ci entra per niente e risale una ricorsione.
    Quì in teoria si passa al secondo giro del ciclo for, processando così cartella3, in teoria dovrebbe fare la stessa cosa di quando ha processato cartella2 invece no!
    Pur passando nuovamente su On Error Goto Errore non je ne frega un C e quando pianta l'errore... pianta l'errore... :master:
    Si, proprio così, nonostante abbia imposto la mi gestione dell'errore a questo punto mi esce le finestra dell'errore che avevo calcolato, ma che avevo calcolato non sarebbe dovuta apparire nel mio schema...

    Ora mi chiedo, è un baco o sono io che mi sono rincojonito?

  2. #2
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    221
    ciao
    scusami, ma se devi copiare una cartella con sotto cartelle...se ho ben capito..
    nn ti conviene usare le funzioni api....se nn sai manco che sono ti do un link dove si scarica il programma...cmq sono chiamate di dll costruite a funzioni che con una riga di codice..fa tutto quella funzione..e li è pieno di funzioni api...come per esempio copyfile...che ti copia tutto e rinomina anche un file quando lo copi....

    http://www.mentalis.org/agnet/appdown.shtml

  3. #3
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Mah.. non so se si può parlare di baco o meno..
    fatto sta che funziona così!

    Io lo do per scontato: quando si genera un errore in una procedura devi uscire dalla stessa perchè nel caso in cui ne venisse generato un altro, questo non è più gestito!

    Ti consiglio di fare così: esegui il loop per generare un livello di cartelle in una seconda procedura lanciata dal for.. così facendo quando si genera l'errore lo gestisci ed esci dalla procedura.

    E' antipatica sta cosa ma.. io l'avevo scoperto tempo fa e mi gestisco di conseguenza!
    Ciao
    Andrea

  4. #4
    se quando viene generato un errore non si da err.clear on error non intercetta più niente
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.