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 :roll:

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 :mrgreen:

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 :shock:

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 :D
Rancar a écrit :J'ai cherché du côté de StringRegExp mais je ne comprends rien
Image

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 :mrgreen:

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 ! :D
Merci à vous :D

Sujet résolu :)