IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

perte de compteur avec récursité et VB.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2007
    Messages : 59
    Par défaut perte de compteur avec récursité et VB.net
    Bonjour,

    J'ai créé un programme qui scanne un répertoire source et le copie dans un répertoire destination. avec vérification des derniers dossiers et fichiers MAJ et suppression dans la sauvegarde des fichiers qui n'existent plus.

    J'ai une boucle récursive qui traite un dossier puis un sous-dossier puis un sous-dossier....
    Dans cette récursivité je mets un compteur à jour "cpt". A chaque fois que je créée un fichier je fait cpt=cpt+1.
    Mais mon compteur fait toujours 1, cependant le code a créé un fichier dans le dossier de départ puis 8 fichiers dans les sous-dossiers.

    en passant le compteur en référence (byref)=cela ne fonctionne pas
    en mettant le compteur en variable globale = cela ne fonctionne pas

    une idée???? pour résoudre mon bug

    Cordialement

  2. #2
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    on peut peut-être voir ton code ?

  3. #3
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Static...

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2007
    Messages : 59
    Par défaut
    voici un morceau de mon code:
    mon compteur ici c'est "repertoireCreer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            'traitement de chaque dossier du répertoire-------------------------------------------------------------------------
            For i = 0 To My.Computer.FileSystem.GetDirectories(source).Count - 1
                nomRepertoire = My.Computer.FileSystem.GetDirectories(source).Item(i)
                nomRepertoire = nomRepertoire.Substring(nomRepertoire.LastIndexOf("\") + 1)
                'le répertoire n'existe pas
                If My.Computer.FileSystem.DirectoryExists(destination & nomRepertoire) = False Then
                    My.Computer.FileSystem.CopyDirectory(source & nomRepertoire, destination & nomRepertoire)
                    repertoireCreer = repertoireCreer + 1
                    If LOG = 1 Then
                        ecrireLog("création du répertoire:" & source & nomRepertoire)
                    End If
                End If
                sauvegardeRepertoires(source & nomRepertoire & "\", destination & nomRepertoire & "\")
            Next

  5. #5
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Initialement, je cherchais la récursivité.

    Puis je me suis dit que tout ce code devait être dans la sub sauvegardeRepertoires().

    Par contre, je ne vois pas la déclaration explicite de repertoireCreer.

    Ou est-ce fait ? Si tu ne déclares pas repertoireCreer, sa portée est ta sub et là sa explique ton probléme.

    Un conseil : option explicit et option strict on

    Cdt.

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2007
    Messages : 59
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Explicit On
     
    Imports system.io
     
    Module Main
        Public fichiersMisAJour As Integer
        Public fichierCreer As Integer
        Public fichierSupprimer As Integer
        Public repertoireCreer As Integer
        Public repertoireSupprimer As Integer
     
        Sub Main()'----------------------------------------------------------------------
            'lancement de la sauvegarde
            erreur_pendant_sauv = 0
            sauvegardeRepertoires(source, destination)
     
            If erreur_pendant_sauv > 0 ThenGoTo fin
    errortrt:
    …
    fin:
    …
        End Sub
     
        Sub sauvegardeRepertoires(ByVal source As String, ByVal destination As String)
     
            On Error GoTo erreurfic
            'traitement de chaque fichier du répertoire-------------------------------------------------------------------------
            For i = 0 To My.Computer.FileSystem.GetFiles(source).Count - 1
                nomFichier = My.Computer.FileSystem.GetFiles(source).Item(i)
                nomFichier = nomFichier.Substring(nomFichier.LastIndexOf("\") + 1)
                'le fichier n'existe pas
                If My.Computer.FileSystem.FileExists(destination & nomFichier) = False Then
                    My.Computer.FileSystem.CopyFile(source & nomFichier, destination & nomFichier)
                    fichierCreer = fichierCreer + 1
                    If LOG = 1 Then
                        ecrireLog("copie du fichier:" & source & nomFichier)
                    End If
                Else
                    fisource = New FileInfo(source & nomFichier)
                    fidestination = New FileInfo(destination & nomFichier)
                    dateSource = fisource.LastWriteTime
                    dateDestination = fidestination.LastWriteTime
                    fisource = Nothing
                    fidestination = Nothing
                    If dateSource > dateDestination Then
                        My.Computer.FileSystem.DeleteFile(destination & nomFichier)
                        My.Computer.FileSystem.CopyFile(source & nomFichier, destination & nomFichier)
                        fichiersMisAJour = fichiersMisAJour + 1
                        If LOG = 1 Then
                            ecrireLog("Mise à jour du fichier:" & source & nomFichier)
                        End If
                    End If
                End If
            Next
     
            On Error GoTo erreurRep
            'traitement de chaque dossier du répertoire-------------------------------------------------------------------------
            For i = 0 To My.Computer.FileSystem.GetDirectories(source).Count - 1
                nomRepertoire = My.Computer.FileSystem.GetDirectories(source).Item(i)
                nomRepertoire = nomRepertoire.Substring(nomRepertoire.LastIndexOf("\") + 1)
                'le répertoire n'existe pas
                If My.Computer.FileSystem.DirectoryExists(destination & nomRepertoire) = False Then
                    My.Computer.FileSystem.CopyDirectory(source & nomRepertoire, destination & nomRepertoire)
                    repertoireCreer = repertoireCreer + 1
                    If LOG = 1 Then
                        ecrireLog("création du répertoire:" & source & nomRepertoire)
                    End If
                End If
                sauvegardeRepertoires(source & nomRepertoire & "\", destination & nomRepertoire & "\")
            Next
     
    …
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pertes de mémoire avec Rave
    Par stepschn dans le forum Delphi
    Réponses: 8
    Dernier message: 15/10/2006, 11h18
  2. [VB.NET] Pb avec date sur VB.Net
    Par mpascolo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/01/2005, 09h14
  3. Installation et perte d'icône avec Firebird
    Par SebCBien dans le forum Applications et environnements graphiques
    Réponses: 22
    Dernier message: 31/10/2004, 16h46
  4. Compteur avec OpenDialog
    Par bajax dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/08/2004, 13h48
  5. [C#] Equivalent Property avec arguments de VB.NET
    Par Antz dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/03/2004, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo