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 :

Comparer 2 tableaux


Sujet :

VBScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut Comparer 2 tableaux
    Bonjour,

    J'ai 2 tableaux :

    Le premier contient une liste d' @IP attribuables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 0 to ubound(arrayAllAvailableIP)
     
    wscript.echo arrayAllAvailableIP(i)
     
    Next
    Ex :
    127.0.0.1
    127.0.0.2
    127.0.0.3
    127.0.0.4
    127.0.0.5
    127.0.0.6
    127.0.0.7
    127.0.0.8
    127.0.0.9
    127.0.0.10
    Le second contient les IP utilisées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Line = 10 to UBound(arrayScopeInfosDump)-4
         wscript.echo arrayScopeInfosDump(Line)
    Next
    Ex :
    127.0.0.4
    127.0.0.5
    127.0.0.7
    127.0.0.9
    Je souhaiterais comparer les 2 tableaux pour afficher :

    127.0.0.1 FREE
    127.0.0.2 FREE
    127.0.0.3 FREE
    127.0.0.4 RESERVED
    127.0.0.5 RESERVED
    127.0.0.6 FREE
    127.0.0.7 RESERVED
    127.0.0.8 FREE
    127.0.0.9 RESERVED
    127.0.0.10 FREE
    Savez vous comment faire ? merci d'avance pour votre aide.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Tu peux essayer de le faire avec les dictionnaires

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    merci pour ta réponse.

    pas possible avec les tableaux ?

    Je vais regarder les dico, merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Par défaut
    sauf que je ne vois pas comment faire même avec les dicos.

  5. #5
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Voici une possibilité parmis tant d'autres avec des tableaux triés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Commencer par trier les 2 tableaux arrAllIpAddresses et arrUsedIpAddresses
    i = 0
     
    For Each strIpAddress In arrAllIpAddresses
    	If StrComp(strIpAddress, arrUsedIpAddresses(i))= 0 Then
    		WScript.Echo strIpAddress & "RESERVED"
    		i = i + 1
    	Else
    		WScript.Echo strIpAddress & "FREE"
    	End If
    Next
    Une autre en utilisant des Dictionnaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set objIpDictionnary = CreateObject("Scripting.Dictionary")
    objAppDictionnary.CompareMode = 1
    For Each strIpAddress In arrAllIpAddresses
    	If NOT objIpDictionnary.Exists(strIpAddress) Then objIpDictionnary.Add(strIpAddress, "FREE")
    Next
    For Each strIpAddress In arrUsedIpAddresses
    	If objIpDictionnary.Exists(strIpAddress) Then objIpDictionnary.Item(strIpAddress) = "RESERVED"
    Next
    For Each strIpAddress In objIpDictionnary.Keys
    	WScript.Echo strIpAddress & " " & objIpDictionnary.Item(strIpAddress)
    Next
    Ces codes ne sont pas testés mais c'est dans l'esprit.

    Bonne continuation.

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    En tenant compte de la 2ème proposition de pitchalov
    Je vous propose ceci :
    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
    Option Explicit
    Dim Titre,fso,ws,objIpDictionnary,NewLogFile,strIpAddress,arrAllIpAddresses,MonTableau,Ligne,i,arrUsedIpAddresses
    Titre = "Comparer 2 tableaux"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject("Wscript.Shell")
    Set objIpDictionnary = CreateObject("Scripting.Dictionary")
    'Nom du fichier qui va stocker le résultat de la comparaison
    NewLogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
    if fso.FileExists(NewLogFile) Then 'Si le fichier LogFile existe 
    	fso.DeleteFile NewLogFile 'alors on le supprime
    end If
     
    Ligne = ""
    Set arrAllIpAddresses = ReadFile("AllAvailableip.txt")
    For Each strIpAddress In arrAllIpAddresses
    	MonTableau = split(strIpAddress,VbCrLF)
    	For i = LBound(MonTableau) To UBound(MonTableau)
    		Ligne = Ligne & MonTableau(i) & VbCrLF
    	Next
    Next
     
    For Each strIpAddress In arrAllIpAddresses
    	If NOT objIpDictionnary.Exists(strIpAddress) Then objIpDictionnary.Add strIpAddress, " FREE"
    Next
     
    Set arrUsedIpAddresses = Readfile("UsedIp.txt")
    For Each strIpAddress In arrUsedIpAddresses
    	If objIpDictionnary.Exists(strIpAddress) Then objIpDictionnary.Item(strIpAddress) = " RESERVED"
    Next
     
    For Each strIpAddress In objIpDictionnary.Keys
    	MsgBox strIpAddress & " " & objIpDictionnary.Item(strIpAddress),64,Titre
    	Call WriteNewLogFile(strIpAddress & " " & objIpDictionnary.Item(strIpAddress),NewLogFile)
    Next
    Ws.Run NewLogFile
    '*****************************************************************
    'Fonction pour écrire le résultat dans un nouveau fichier texte
    Sub WriteNewLogFile(strText,NewLogFile)
    	Dim fs,ts 
    	Const ForAppending = 8
    	Set fs = CreateObject("Scripting.FileSystemObject")
    	Set ts = fs.OpenTextFile(NewLogFile,ForAppending,True)
    	ts.WriteLine strText
    	ts.Close
    End Sub
    '*****************************************************************
    Function Readfile(strFile)
    	dim fs,objTextFile,userArrayList,strNextLine
    	set fs=CreateObject("Scripting.FileSystemObject")
    	dim arrStr
    	set objTextFile = fs.OpenTextFile(strFile)
    	Set userArrayList = CreateObject( "System.Collections.ArrayList" )
    	Do Until objTextFile.AtEndOfStream 
    		strNextLine = objTextFile.Readline 
    		userArrayList.add strNextLine
    	Loop 
    	objTextFile.Close
    	set objTextFile = Nothing
    	set fs = Nothing
    	set readfile = userArrayList
    End function
    '*****************************************************************

Discussions similaires

  1. [Tableaux] Comparer 2 tableaux à 2 dimensions
    Par lili2704 dans le forum Langage
    Réponses: 3
    Dernier message: 16/11/2007, 14h21
  2. Comparer deux tableaux
    Par gefrey54 dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 12/09/2007, 10h58
  3. [Tableaux] Comparer 2 tableaux
    Par lama85 dans le forum Langage
    Réponses: 3
    Dernier message: 08/08/2006, 15h19
  4. comparer deux tableaux
    Par djibril dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 15h26

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