Page 1 sur 1

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

Posté : ven. 29 août 2008 08:35
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

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

Posté : ven. 29 août 2008 10:18
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 ?")

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

Posté : ven. 29 août 2008 12:01
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

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

Posté : ven. 29 août 2008 12:35
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

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

Posté : ven. 29 août 2008 12:50
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")

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

Posté : ven. 29 août 2008 13:39
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

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

Posté : ven. 29 août 2008 15:23
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

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

Posté : ven. 29 août 2008 16:33
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. ;)

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

Posté : ven. 29 août 2008 16:56
par Yogui
je prend ça comme un compliment

Encore merci