[R] problème avec tableau (éviter doublon)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

[R] problème avec tableau (éviter doublon)

#1

Message par Yogui »

Bonjour,

encore un problème avec les tableaux :(

je l'explique toujours pour lancer une commande telnet sur un ou plusieurs IP en cas de log en erreur j'ai un string qui ressemble à ça : COM1|COM1|COM17|COM4|COM1


Je voudrait mettre ce string dans un array mais sans doublon donc juste

COM1
COM17
COM4

Pouvez vous m'aider

Merci
Modifié en dernier par Yogui le ven. 29 août 2008 15:20, modifié 1 fois.
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#2

Message par Yogui »

:x
je ne comprend pas pourquoi le code n'entre pas dans le second for ?

Code : Tout sélectionner

$i=1
;je remplis la première ligne de mon tableau $resultat avec la premiere ligne de mon tableau $com
$resultat[1] = $com[1]
;je commence le parcourt du tableau $com
For $Z = 1 to $com[0]
;pour voir si je rentre bien dans la boucle j'affiche mon $Z
    MsgBox(0,"Z",$Z)
;je commence le parcourt du tableau $resultat
    For $A = 1 to $resultat[0]
;pour voir si je rentre bien dans la boucle j'affiche mon $A

;et raté ...
            MsgBox(0,"A",$A)
    MsgBox(0,'titre','lecture com :'&$com[$Z]&" lecture resultat :"&$resultat[$A])

            If $resultat[$A] = $com[$Z] Then
                $Z = $Z +1
                else
                $resultat[0] = $i+1 
                $resultat[$A] = $com[$Z]
            EndIf
    Next

Next
_ArrayDisplay ($resultat," résultat ?")
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#3

Message par Yogui »

J'ai trouvé pour entrer dans le second for :s j'avais oublier d'initialiser le tableau :'(

:oops: :oops:

Mais toujours ce problème de logique je n'arrive pas à voir ou je me trompe :) je vais y arriver
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#4

Message par Tlem »

En s'inspirant de ceci : http://www.autoitscript.fr/forum/viewto ... =21&t=1447

voici un code fonctionnel :

Code : Tout sélectionner

#Include <array.au3>

$Chaine = "COM1|COM1|COM17|COM4|COM1"
$COM = StringSplit($Chaine, "|")

$Resultat = _ArrayUnique($COM, '', 1)
_ArrayDisplay($Resultat,"")


Func _ArrayUnique(ByRef $aArray, $vDelim = '', $iBase = 1, $iUnique = 1)
    If $vDelim = '' Then $vDelim = Chr(01)
    Local $sHold
    For $iCC = $iBase To UBound($aArray) - 1
        If Not StringInStr($vDelim & $sHold, $vDelim & $aArray[$iCC] & $vDelim, $iUnique) Then _
                $sHold &= $aArray[$iCC] & $vDelim
    Next
    Return StringSplit(StringTrimRight($sHold, StringLen($vDelim)), $vDelim)
EndFunc   ;==>_ArrayUnique
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#5

Message par jbnh »

Euh, voila aussi une solution mais celle de tlem m'a l'air plus court (il m'a devancé, le coquin)

Code : Tout sélectionner

#Include<File.au3>
#Include<array.au3>
Dim $doublons

;-----------------A COMPLETER---------------------------------
$string = "COM1|COM1|COM17|COM4|COM1"
;--------------------------------------------------------------------


$text = StringReplace($string, "|", @CR)
$line = StringSplit($text, @CR)
For $i = 1 To $line[0]
Filewrite ("test.txt", $line[$i]  & @CRLF)
Next


_FileReadToArray("test.txt",$doublons)
$loop = UBound($doublons - 1)                              
$j = 0
$i = 0

While $i < $loop
    While $j < $loop
        If $i <> $j Then                                  
            If $doublons[$i] == $doublons[$j] Then
                _ArrayDelete($doublons, $j)                 
                $loop = UBound($doublons - 1)              
            EndIf      
        EndIf
        $j += 1
    WEnd
    $j = 0
    $i += 1
WEnd
;
 _ArrayDisplay($doublons)
 
 FileDelete("test.txt")
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#6

Message par Yogui »

ça fonctionne Encore merci (j'ai l'impression que je remercie souvant sur ce forum :mrgreen: )

Je comprend bien le code de jbnh par contre celui de Tlem il va faloir que je prenne le temps de le lire et relire :mrgreen: je ne le comprend pas :lol:

Merci beaucoup à tous les deux
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [R] problème avec tableau (éviter doublon)

#7

Message par Yogui »

Je ferme ce post ça fonctionne mon vérificateur de log fonctionne :mrgreen:
fini d'attendre que le serveur bip ou que les utilisateurs m'appel (le dimanches à 23 heures) pour que je redémarre une [{auto-censure}] de boitier réseau ...

Merci à tous ceux qui m'ont aider :mrgreen: à le finir et à progresser un petit peu sur les tableaux
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] problème avec tableau (éviter doublon)

#8

Message par Tlem »

Yogui a écrit :Je comprend bien le code de jbnh par contre celui de Tlem il va faloir que je prenne le temps de le lire et relire :mrgreen: je ne le comprend pas
Il est vrai que comprendre un code c'est bien, mais souvant vous utilisez des fonctions (celles qui sont dans les includes) que vous ne cherchez pas forcément à comprendre.
Donc dans le cas présent cela peut être la même chose, vous avez une fonction (_ArrayUnique) qui filtre un tableau, nul n'est besoin de chercher à comprendre, il suffit de savoir l'utilisée.

Pour le reste du code, ben ... Je pense que je n'ai pas besoin d'expliquer plus. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [R] problème avec tableau (éviter doublon)

#9

Message par Yogui »

je prend ça comme un compliment

Encore merci
Répondre