Page 1 sur 1
[R] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 17:53
par Rancar
Bonjour,
En fait, je coince sur un bête truc : lire le numéro de la ligne où se trouve la chaîne rechercher.
Je suppose que je dois utiliser FileReadLine et StringInStr mais je n'en sais pas plus ^^
J'ai essayé ceci mais ça ne fonctionne pas =/
Ici, je cherche la ligne qui contient la première chaîne "Cherche"
Code : Tout sélectionner
FileReadLine("blabla.txt",StringInStr("blabla.txt","Cherche",0,1))
Merci de votre aide et désolé pour la "débilité" de ma question

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 18:31
par yohan8
Il me semble que la fonction FileReadLine ne te permet pas de "lire un numéro de ligne", mais plutot de "Lire une ligne dans son intégralité".
En revanche la fonction _FileReadToArray te permet de remplir un tableau avec chaque ligne de ton fichier.
Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 18:37
par Rancar
Merci pour votre réponse

Je vais creuser du côté de _FileReadToArray

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 18:57
par mikell
Nan nan, FileReadLine était la bonne piste
Code : Tout sélectionner
$file = FileOpen("test.txt", 0)
$i = 0
$found = false
While 1
$i += 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringInStr($line,"cherche") Then
$found = true
ExitLoop
EndIf
WEnd
FileClose($file)
If $found Then MsgBox(0, "", "ligne " & $i)
Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 18:58
par Rancar
Merci Mikell mais j'ai trouvé une autre solution :
_FileReadToArray fonctionne aussi comme ceci :
Code : Tout sélectionner
Local $ReadText
_FileReadToArray("blabla.txt",$ReadText)
For $x = 1 To $ReadText[0]
If StringInStr($ReadText[$x],"Cherche",0,1) Then
MsgBox(0,"","Ligne : "&$x)
EndIf
Next
Exit
Laquelle est la plus efficace/ plus rapide ?

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:05
par mikell
Efficacité identique, rapidité non (le fichier est intégralement lu dans une array puis l'array est relue) mais pour ce traitement-là la différence n'est pas significative

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:12
par Rancar
Oki merci

Une dernière petite question qui n'a rien avoir (mais qui ne nécessite pas vraiment l'ouverture d'un nouveau sujet)
Comment analyser une chaîne et retirer les nombres ?
Ex : "blahk hfk hr4574ff jlfj" devient "4574" ? ^^
J'ai cherché du côté de StringRegExp mais je ne comprends rien

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:16
par yohan8
L'avantage est que ton script est plus "propre" avec _FileReadToArray
Rancar a écrit :J'ai cherché du côté de StringRegExp mais je ne comprends rien

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:18
par Rancar
Certes mais il nécessite une include quand même

Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:19
par mikell
StringRegExp sert exactement à ça mais a une syntaxe bien personnelle
Code : Tout sélectionner
$txt = "blahk hfk hr4574ff jlfj"
$res = StringRegExp($txt, '\d+', 3)
Msgbox(0,"", $res[0])
Re: [..] Lire la ligne où se trouve la chaîne X
Posté : mar. 27 août 2013 19:22
par Rancar
C'est parfait !

Merci à vous
Sujet résolu
