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
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 :'(
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

)
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

je ne le comprend pas
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
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

à 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

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