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

VBScript Discussion :

merci de m'expliquer cette fonction //


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut merci de m'expliquer cette fonction //
    Bonjour à tous,

    Bon je n'ai aucune compétence dans le langage VBS mais dans mon travail j'ai besoin de comprendre le fonctionnement de cette fonction pour comprendre un script d'installation de windows hotfix , la fonction est la suivante :

    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
    Function CompareLevels(CompareLevelVersionAlpha, PresentVersionAlpha)
    	Dim PresentVersionArray, CompareLevelArray, CompareLevelArrayValues, PresentVersionValue
    	Dim firstPresentVersionArray
    	Dim LenCompareLevel, LenPresentVersion, MinLength, i, Flag
     
    	RFE_logfile RFE_logfilepath, LOG_LINE_SEPARATOR
     
    	CompareLevelVersion = Replace(CompareLevelVersionAlpha, "S", "")
    	CompareLevelVersion = Replace(CompareLevelVersion, "P", "")
    	PresentVersion = Replace(PresentVersionAlpha, "S", "")
    	PresentVersion = Replace(PresentVersion, "P", "")	
    	CompareLevelArray = Split(CompareLevelVersion,".")
    	PresentVersionArray = Split(PresentVersion,".")
     
    	LenCompareLevel = UBound(CompareLevelArray)
    	LenPresentVersion = UBound(PresentVersionArray)
    	firstPresentVersionArray = LBound(PresentVersionArray)
     
     
    	'Calculate the Length
    	If LenPresentVersion > LenCompareLevel Then
    		For i = LenCompareLevel To (LenPresentVersion - 1)
    			ReDim Preserve CompareLevelArray(UBound(CompareLevelArray) + 1)
    			CompareLevelArray(UBound(CompareLevelArray)) = 0
    			LenCompareLevel = UBound(CompareLevelArray)
    		Next
    		MinLength = LenCompareLevel 
    	Else
    		If LenCompareLevel > LenPresentVersion Then
    			For i = LenPresentVersion To (LenCompareLevel - 1)
    				ReDim Preserve PresentVersionArray(UBound(PresentVersionArray) + 1)
    				PresentVersionArray(UBound(PresentVersionArray)) = 0
    				LenPresentVersion = UBound(PresentVersionArray)
    			Next
    		End If 
    		MinLength = LenPresentVersion
    	End If
     
    	For i = 0 To MinLength
    		If CInt(CompareLevelArray(i)) > CInt(PresentVersionArray(i)) Then
    	  	Flag = -1
    	  	Exit For
    		Else 
    	  	If CInt(CompareLevelArray(i)) < CInt(PresentVersionArray(i)) Then
    				Flag = -4
    				Exit For
     	  	Else
    				Flag = 0
    	  	End If
    		End If
      Next
     
    	If (Flag = -4) Then
    	  	CompareLevels = -4
    		Exit Function		
      End If
      If (Flag = -1) Then
      		CompareLevels = -1
    		Exit Function
    	End If
    	If (Flag = 0) Then
    			CompareLevels = 0
    		Exit Function
      End if
    	CompareLevels = -1
    End Function

    Bon c'est clair que la fonction compare les deux input mais je ne comprend pas le détails de fonctionnement, donc ma question pour les connaisseurs du langage merci de me donner le résultat de la fonction avec les entrées suivantes par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompareLevels(S 7.7 , S 7.10)
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut


    Grosso-modo ce que j'ai un peu compris, car il y a une ligne que j'ai du la commenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'RFE_logfile RFE_logfilepath, LOG_LINE_SEPARATOR
    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
    MsgBox "On compare la version S 7.10 a celle de S 7.10 le resultat est : "& CompareLevels("S 7.10","S 7.10") & vbcr & " Pas de mise a jour !",vbInformation,"Comparaison des versions"
     
    MsgBox "On compare la version S 7.7 a celle de S 7.10 le resultat est : "& CompareLevels("S 7.7","S 7.10") & vbcr & " La version S 7.0 est plus ancienne par rapport a  la version S 7.10 !",vbExclamation,"Comparaison des versions"
     
    MsgBox "On compare la version S 7.10 a celle de S 7.7 le resultat est : " & CompareLevels("S 7.10","S 7.7") & vbcr & "Donc il y a une version plus recente c'est la version S 7.10 !",vbExclamation,"Comparaison des versions"
     
    Function CompareLevels(CompareLevelVersionAlpha, PresentVersionAlpha)
        Dim PresentVersionArray, CompareLevelArray, CompareLevelArrayValues, PresentVersionValue
        Dim firstPresentVersionArray
        Dim LenCompareLevel, LenPresentVersion, MinLength, i, Flag
     
        'RFE_logfile RFE_logfilepath, LOG_LINE_SEPARATOR
     
        CompareLevelVersion = Replace(CompareLevelVersionAlpha, "S", "")
        CompareLevelVersion = Replace(CompareLevelVersion, "P", "")
        PresentVersion = Replace(PresentVersionAlpha, "S", "")
        PresentVersion = Replace(PresentVersion, "P", "")
        CompareLevelArray = Split(CompareLevelVersion,".")
        PresentVersionArray = Split(PresentVersion,".")
     
        LenCompareLevel = UBound(CompareLevelArray)
        LenPresentVersion = UBound(PresentVersionArray)
        firstPresentVersionArray = LBound(PresentVersionArray)
     
     
        'Calculate the Length
        If LenPresentVersion > LenCompareLevel Then
            For i = LenCompareLevel To (LenPresentVersion - 1)
                ReDim Preserve CompareLevelArray(UBound(CompareLevelArray) + 1)
                CompareLevelArray(UBound(CompareLevelArray)) = 0
                LenCompareLevel = UBound(CompareLevelArray)
            Next
            MinLength = LenCompareLevel 
        Else
            If LenCompareLevel > LenPresentVersion Then
                For i = LenPresentVersion To (LenCompareLevel - 1)
                    ReDim Preserve PresentVersionArray(UBound(PresentVersionArray) + 1)
                    PresentVersionArray(UBound(PresentVersionArray)) = 0
                    LenPresentVersion = UBound(PresentVersionArray)
                Next
            End If 
            MinLength = LenPresentVersion
        End If
     
        For i = 0 To MinLength
            If CInt(CompareLevelArray(i)) > CInt(PresentVersionArray(i)) Then
              Flag = -1
              Exit For
            Else 
              If CInt(CompareLevelArray(i)) < CInt(PresentVersionArray(i)) Then
                    Flag = -4
                    Exit For
               Else
                    Flag = 0
              End If
            End If
      Next
     
        If (Flag = -4) Then
              CompareLevels = -4
            Exit Function        
      End If
      If (Flag = -1) Then
              CompareLevels = -1
            Exit Function
        End If
        If (Flag = 0) Then
                CompareLevels = 0
            Exit Function
      End if
        CompareLevels = -1
    End Function

Discussions similaires

  1. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10
  2. Comment lancer cette fonction sur un bouton ?
    Par jeronimo dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2006, 11h33
  3. Réponses: 1
    Dernier message: 05/12/2005, 08h10
  4. expliqué cette requête
    Par ismailsalam dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/09/2005, 14h10
  5. Réponses: 5
    Dernier message: 03/12/2004, 10h16

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