Page 1 sur 1

[..] Trouver et remplacer une chaine de caractères.

Posté : mer. 06 août 2008 10:09
par alaindj
Bonjour à tous,

Je ne suis pas développeur mais je suis amené à créer qq scripts ponctuellement pour me faciliter la tâche.
Voici le contexte :
Je lancer des pings vers x serveurs et ajoute ceux qui ne répondent pas dans un fichier.
Je supprime le fichier à chque lancement du script.

Mais....j'aimerai savoir depuis combien de temps le serveur est down et donc y ajouter la date à laquelle le ping n'est plus passé (jusque là c'est facile)

mon problème est l'effacement de l'entrée...
px fichier.txt
ServerA;06/08/08 08:06:04
ServerB;06/08/08 10:04:08
ServerC;06/08/08 11:15:55
Si le ServerA est toujours Hs alors je laisse l'entrée
Si le ServerB répond maintenant, il faut que je puisse supprimer l'intégralité de la ligne mais comment ?????
je sais remplacer une chaine par une autre (typiquement ServerB par [vide]) mais je dois aussi supprimer ;06/08/08 10:04:08...
pouvez-vous m'aider ? ca doit être tout bête mais je câle !

merci par avance

à+

Re: [..] Trouver et remplacer une chaine de caractères.

Posté : mer. 06 août 2008 18:58
par Tlem
Pour lire ligne par ligne, utilisez la fonction FileReadLine("filename" , $iLine) puis pour supprimer une ligne spécifique, utilisez la fonction _FileWriteToLine() comme ceci :

Code : Tout sélectionner

#Include <File.au3>

_FileWriteToLine($sFile, $iLine, "", 1)
Voici ce qui est dit dans l'aide :
Remarks
If _FileWriteToLine is called with $fOverWrite as 1 and $sText as "", it will delete the line.

Re: [..] Trouver et remplacer une chaine de caractères.

Posté : jeu. 07 août 2008 09:07
par alaindj
Bonjour,

merci pour l'information...je connaissais cette fonction mais je ne sais pas renvoyer le numéro de ligne de l'occurence recherchée...
Si j'ai ça...c'est tout bon !
merci beaucoup

Re: [..] Trouver et remplacer une chaine de caractères.

Posté : jeu. 07 août 2008 09:52
par Tlem
Puisque vous lisez votre fichier ligne par ligne, vous devez donc forcément connaitre le N° de la ligne que vous êtes en train de lire !!!
Je ne vois pas ou est votre problème ...

Une autre solution serait de lire votre fichier dans un tableau :

Code : Tout sélectionner

#Include <File.au3>
_FileReadToArray($sFilePath, ByRef $aArray)
Puis de travailler sur celui-ci.
Si vous devez supprimer une ligne :

Code : Tout sélectionner

#Include <Array.au3>
_ArrayDelete(ByRef $avArray, $iElement)
Astuce : Lire le tableau en sens inverse pour ne pas être embêté par la taille du tableau.
En effet, si votre tableau à un dimension de 10 par exemple, et que vous supprimez l'éléments 5, alors les éléments suivant se voient décalés vers le bas (6 devient 5, 7 devient 6, etc ...), et dans la boucle de lecture ça finit par provoquer une erreur.

Et pour finir, il vous suffira de re-générer le fichier avec ceci :

Code : Tout sélectionner

#Include <File.au3>
_FileWriteFromArray($File, $a_Array[, $i_Base = 0[, $i_UBound = 0]])