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 6 et antérieur Discussion :

question sur goto


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Par défaut question sur goto
    Bonjour,

    j'ai récupéré un code VB6 que je dois modifier en VB.net j'ai pris la solution de tout recoder, pour moi c'est la meilleure solution.

    Donc sur ce fais j'ai une question qui touche a VB6 et a sa fonction GOTO.

    Quand on a l'instruction GOTO le programme va faire directement l'instruction en evitant toute la partie du code avant ca c'est bon c'est compris mais ma question c'est que je voulais savoir :

    Je vais prendre exemple avec mon code

    voici le code que j'ai :

    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    'Si serveur triade
                    sCmde = sDirlmstat & " -c " & slmsrv1 & " -f " & sModul & " > " & sDiracqfic & "\acqe_" & sSection & "_" & sFicTempAcq & ".txt" & vbLf & sDirlmstat & " -c " & slmsrv2 & " -f " & sModul & " >> " & sDiracqfic & "\acqe_" & sSection & "_" & sFicTempAcq & ".txt" & vbLf & sDirlmstat & " -c " & slmsrv3 & " -f " & sModul & " >> " & sDiracqfic & "\acqe_" & sSection & "_" & sFicTempAcq & ".txt"
                    NumFich = FreeFile()
                    FileOpen(NumFich, (sDiracqbat & "\acqe_" & sModul & ".bat"), OpenMode.Output)
                    PrintLine(NumFich, sCmde)
                    FileClose(NumFich)
                    b = ExecuterCommandeDOS(sDiracqbat & "\acqe_" & sModul & ".bat")
                End If
            End If
     
    Extract:
            'Extraction
            FileOpen(NumFich, (sDiracqfic & "\acqe_" & sSection & "_" & sFicTempAcq & ".txt"), OpenMode.Input)
    RechFlex:
            'Recherche  " Flexible...
            texte = LineInput(NumFich)
            If EOF(1) = True Then GoTo Fin
            If Not InStr(1, texte, "Flexible License Manager status on", CompareMethod.Text) <> 0 Then GoTo RechFlex
            'Affectation de CrTime
            tbCrTime = Split(CrTime, "/")
            CrTime = tbCrTime(1) & "/" & tbCrTime(0) & "/" & tbCrTime(2)
            CrTime = Format(CrTime, "dd/mm/yyyy hh:mm")
     
            'Recherche  " Detecting...
    RechDetect:
            texte = LineInput(NumFich)
            If EOF(NumFich) = True Then GoTo Fin
            If Not InStr(1, texte, "[Detecting lmgrd processes...]", CompareMethod.Text) <> 0 Then GoTo RechDetect
     
            CptSrv = CptSrv + 1
            'Recherche  " User of <sModul>...
            umod = "Users of " & sModul
            texte = LineInput(NumFich)
            If EOF(NumFich) = True Then GoTo RechErr
            If InStr(1, texte, umod, CompareMethod.Text) <> 0 Then GoTo ErrFound
     
    RechErr:
            'Recherche  " Error...
            'Identification du serveur ... afin d'en déterminer l'erreur
            If InStr(1, texte, "Error", CompareMethod.Text) <> 0 And triad = False Then
                FileClose(NumFich)
                'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet a. Cliquez ici*: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
                a = Shell(My.Application.Info.DirectoryPath & "\SendError.bat", 1)
                'Edition des messages d'erreurs dans le fichier .log en cas de serveur ...
                FileOpen(NumFich, (sDirlog & "\" & sSection & ".txt"), OpenMode.Append)
                TextErr = CrTime & "  erreur  " & texte
                PrintLine(NumFich, TextErr)
                FileClose(NumFich)
                b = ExecuterCommandeDOS(sDirexe & "\SendError.bat")
                GoTo Fin
            End If
     
     
     
     
            'Identification du serveur triade afin d'en déterminer l'erreur
            If InStr(1, texte, "Error", CompareMethod.Text) <> 0 And triad = True Then
                CptErr = CptErr + 1
     
            End If
            If CptErr = 1 Then
                If CptSrv = 1 Then
                    TextErr = CrTime & "  information " & " Serveur triade en marche dégradée " & slmsrv2 & " " & slmsrv3
                End If
                If CptSrv = 2 Then
                    TextErr = CrTime & "  information " & " Serveur triade en marche dégradée " & slmsrv1 & " " & slmsrv3
                End If
                If CptSrv = 3 Then
                    TextErr = CrTime & "  information " & " Serveur triade en marche dégradée " & slmsrv1 & " " & slmsrv2
                End If
                FileClose(NumFich)
                FileOpen(NumFich, (sDirlog & "\" & sSection & ".txt"), OpenMode.Append)
                PrintLine(NumFich, TextErr)
                FileClose()
            Else
                GoTo Fin
            End If
            GoTo Extract
    Fin:
            FileClose(NumFich)
     
            'Destruction du fichier d'acquisition
            Kill((sDiracqfic & "\acqe_" & sSection & "_" & sFicTempAcq & ".txt"))
     
            'Fin
        End Sub
    End Module
    J'ai mis une petite partie pour éviter le gros pavé.
    Donc est ce quand l'instruction du "GOTO Extract" est terminer est ce que le programme va enchainer sur les instructions suivantes comme Recherr: ou RechDetect: ou va t'il éviter toutes les autres instructions et aller directement a la fin ?

    Je m'excuse de la longueur du topic pour une si petite question mais cela va me permettre de mieux comprendre le code, car avec l'utilisation du GOTO on se perd vite.

    Merci d'avance
    Bonne journée

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Oui (comme tout GOTO) ===>> se rend à l'étiquette concernée et exécute le code qui suit cette étiquette.

    Remarque : tu as là affaire à un véritable "code spaghetti" !!!! (et je vois en plus que le code qui suit l'étiquette extract contient des instructions qui peuvent l'y ramener ...) ... On ne fait pas mieux dans le genre "spaghetti" .. c'est même du "spaghetti yoyo" !

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par azräel Voir le message
    Bonjour,

    j'ai récupéré un code VB6 que je dois modifier en VB.net j'ai pris la solution de tout recoder, pour moi c'est la meilleure solution..../...
    Effectivement, le mieux est de vider les poubelles plutôt que les reconditionner.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 102
    Par défaut
    Merci pour vos réponses malgré un code bien pourri je comprend deja un peu mieux.

    Bonne journée a vous

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

Discussions similaires

  1. Question sur goto
    Par deubelte dans le forum C++
    Réponses: 11
    Dernier message: 24/02/2007, 10h46
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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