[R] Suppression dans un array par _ArrayDelete

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

[R] Suppression dans un array par _ArrayDelete

#1

Message par lutin44 »

Bonjour à tous, ca faisait un petit moment que je n'étais pas venu sur le forum, mais pour les besoins du boulot, je construis un script qui me pose un petit soucis.
En fait avec ce script je crée un map réseau dans lequel je scan tous les fichiers *.sms , ensuite je les envois dans un fichier texte pour les ressortir dans un array. Le truc c'est que parmis les fichiers ayant cette extansion certains ne m'interessent pas, et je voudrais les supprimer de l'array ce sont ceux portant le nom "template".
en fait mon script ne me les supprime pas tous, il m'en laisse :oops: , et là je ne vois pas ou je fais une erreur.
quelqu'un aurait-il une suggestion?

ci-joint le script et le fichier joint text2.txt

Merci par avance de vos réponses

Code : Tout sélectionner

#include <Constants.au3>
#Include <File.au3>
#Include <Array.au3>
dim $aArray
$srvmap=@LogonServer
DriveMapAdd ( "k:",$srvmap&"\smspkgp$")
msgbox(48,"chemin trouvé",@LogonServer,3)

$rechechem=run(@ComSpec&" /c "&"dir /B /S K:\SMSPKG\*.sms","",@SW_HIDE,$STDOUT_CHILD)
sleep(11000)
$chemtrouv = StdoutRead($rechechem)
msgbox(48,"chemin trouvé",$chemtrouv,3)
FileWrite("c:\temp\test2.txt",$chemtrouv)
$filelist=_FileReadToArray("c:\temp\test2.txt",$aArray)
_ArrayDisplay($aArray,"$filelist")

$arraysearch=_ArrayFindAll($aArray,"template","","",0,1)
_ArrayDisplay($arraysearch,"$arraysearch")
For $i = 1 To $arraysearch[0]
    _ArrayDelete($aArray, $arraysearch[$i])
Next
_ArrayDisplay($aArray,"$aArrayDelete")
FileDelete("c:\temp\test2.txt")
 
ps: le script en est encore qu'à l'essai donc il y a plein de msgbox, mais je les enlèverais après.
test2.txt
(2.03 Kio) Téléchargé 68 fois
Modifié en dernier par lutin44 le mar. 23 déc. 2008 11:09, modifié 1 fois.
olaiv
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 26 avr. 2008 22:17
Status : Hors ligne

Re: Suppression dans un array par _ArrayDelete

#2

Message par olaiv »

Salut ,

Utiliser _ArrayDelete dans une boucle te redimensionne ton tableau à chaque fois et les index de lignes à supprimer comprises dans le résultat de ton _ArrayFindAll deviennent forcement fausse.

Avec un peu de bidouille j'arrive à ça mais il y a surement moyen de faire mieux.

Code : Tout sélectionner

#include <Constants.au3>
#Include <File.au3>
#Include <Array.au3>
dim $aArray
$srvmap=@LogonServer
DriveMapAdd ( "k:",$srvmap&"\smspkgp$")
msgbox(48,"chemin trouvé",@LogonServer,3)

$rechechem=run(@ComSpec&" /c "&"dir /B /S K:\SMSPKG\*.sms","",@SW_HIDE,$STDOUT_CHILD)
sleep(11000)
$chemtrouv = StdoutRead($rechechem)
msgbox(48,"chemin trouvé",$chemtrouv,3)
FileWrite("c:\temp\test2.txt",$chemtrouv)
$filelist=_FileReadToArray("c:\temp\test2.txt",$aArray)
_ArrayDisplay($aArray,"$filelist")

$arraysearch=_ArrayFindAll($aArray,"template","","",0,1)
_ArrayDisplay($arraysearch,"$arraysearch")

For $i = 1 To UBound($arraysearch)
    _ArrayDelete($aArray, $arraysearch[$i-1])
    If $i=UBound($arraysearch) Then ExitLoop
    $arraysearch[$i]-=$i
Next

_ArrayDisplay($aArray,"$filelist")



 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Suppression dans un array par _ArrayDelete

#3

Message par Tlem »

Pour supprimer des éléments d'un tableau sans être embêté par le re-dimensionnement, il vaut mieux commencer par la fin pour finir au début. ;)

Faites donc votre boucle en sans inverse :

Code : Tout sélectionner

For $i = 10 to 1 Step -1
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é".
lutin44
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 13 déc. 2007 14:38
Localisation : Nantes
Status : Hors ligne

Re: Suppression dans un array par _ArrayDelete

#4

Message par lutin44 »

Merci a tous les deux, ça y est avec votre aide j'ai pu terminer mon script :D et en faire profiter les collegues :mrgreen: , je clos le sujet, du coup.
Bonnes fêtes de fin d'années et à bientôt pour de nouvelles aventures :wink:

Salut
Répondre