Page 1 sur 1
[R] Lecture d'un caractère précis dans un fichier
Posté : jeu. 28 févr. 2008 19:49
par tolf
Bonsoir,
je voudrais lire un caractère précis dans un fichier, en connaisant son rang dans le fichier : existe-t-il une fonction pour le faire.
Merci d'avance
Re: [..] Lecture d'un caractère précis dans un fichier
Posté : jeu. 28 févr. 2008 21:03
par Tlem
Qu'entendez vous par : 'son rang' ?
Re: [..] Lecture d'un caractère précis dans un fichier
Posté : ven. 29 févr. 2008 13:55
par tolf
Par "son rang", j'entend sa position dans le fichier. Par exemple, dans le fichier suivant :
"A" est le caractère de rang 1, "B" celui de rang 2, etc...
Re: [..] Lecture d'un caractère précis dans un fichier
Posté : ven. 29 févr. 2008 15:41
par Tlem
Si c'est pour utilisez comme vous l'indiquez, alors utilisez ceci :
et donc pour lire le 4ieme caractère du fichier test.txt :
Re: [..] Lecture d'un caractère précis dans un fichier
Posté : ven. 29 févr. 2008 16:27
par tolf
Bonjour,
J'ai consulté l'aide et pour le paramètre "count", ils disent :
Code : Tout sélectionner
[optional] The number of characters to read. Default read the entire file. Not optional for file in raw reading mode
et "The
number of characters to read" veut dire "Le
nombre de caractères à lire" et non pas "Le numero du caractère à lire".
J'ai testé l'exemple et en fait, "count" correspond au nombre de caractères à lire :
- depuis le début si on utilise :
- après le dernier caractère lu si on utilise :
Donc la fonction "FileRead" ne permet pas de lire un caractère précis.
En revanche, j'ai trouvé un autre moyen :
Re: [..] Lecture d'un caractère précis dans un fichier
Posté : ven. 29 févr. 2008 17:08
par Tlem
tolf a écrit :Donc la fonction "FileRead" ne permet pas de lire un caractère précis.
Exacte, j'ai été trop rapide pour la réponse.
Désolé.
Voici une solution que j'ai testé, et qui fonctionne :
Code : Tout sélectionner
#include <File.au3>
$hTest = FileRead ("Test.txt")
$aTest = StringSplit($hTest, "")
Msgbox(0,"Caractère N°4", $aTest[4])
Re: [R] Lecture d'un caractère précis dans un fichier
Posté : sam. 01 mars 2008 14:27
par ani
::Aide ::
stringlen = retourne le nombre de caractère de la chaîne
stringsplit = découpe la chaîne
string = chaîne
je propose une fonction

A amèliorer, deux chose a ajouter, retourner les erreurs dans le cas ou le rang sélectionné est trop haut genre y 13 rang tu demande le 14 erreur et vice versa.
cette fonction peut retourner le rang ou la lettre ou encore le tableau
Code : Tout sélectionner
$Texte = "ABCD"
ConsoleWrite(_test($Texte,"C")) ;retoune 3
ConsoleWrite(_test($Texte,2)) ; retourne B
ConsoleWrite(_test($Texte,"")) ; retourne un tableau avec le rang et la lettre
Func _test($Texte,$Rang)
$Sortie =""
$Len = stringlen($Texte)
$Split = stringsplit($Texte,"")
for $x = 1 to $Len
if $x = Number($Rang) Then
$Sortie = $split[$x]
Elseif $rang = string($split[$x]) Then
$Sortie = $x
ElseIf $rang = "" Then
$Sortie &= $x & @TAB & $split[$x] & @LF
EndIf
Next
return $Sortie
EndFunc
ou bien dans la condition If/Endif
Code : Tout sélectionner
$Texte = "ABCD"
ConsoleWrite(_test($Texte,1))
Func _test($Texte,$Rang)
$sortie =""
$Len = StringLen($Texte)
$Split = StringSplit($Texte,"")
For $x = 1 to $len
If String($rang) = "" Then ; si la chaine rang = "" alors
$sortie &= $x & @TAB & $split[$x] & @LF ; la sortie
EndIf ; on ferme la condition
If $x = Number($Rang) Then ; si l'indice de rang est égal à un chiffre alors
$sortie = $split[$x] ; sort la lettre selon le rang selectionné
EndIf ; on ferme la condition
If $rang = string($split[$x]) Then ; si rang est égal a la chaine du tableau découpé alors
$sortie = $x ; sort le nombre
EndIf ; on ferme la condition
Next
return $sortie
EndFunc
tu peux aussi écrire le code de cette manière (on gagne quelque ligne ^^-
Code : Tout sélectionner
Func _test($Texte,$Rang)
$len = stringlen($Texte)
$split = stringsplit($Texte,"")
For $x = 1 to $len
If $x = Number($Rang) Then
return $split[$x]
Elseif $rang = string($split[$x]) Then
return $x
EndIf
Next
EndFunc
j'espere que c'est bon

commentaire ?
Re: [R] Lecture d'un caractère précis dans un fichier
Posté : dim. 09 mars 2008 16:55
par tolf
Le problème c'est que si le texte contient des chiffres et qu'on tape dans le paramètre $Rang un chiffre entre guillemets, la fonction ne va pas chercher la position du chiffre mais le caractère situé à cette position :
Code : Tout sélectionner
$Texte = "ABC1D"
ConsoleWrite(_test($Texte,"1")) ;<== retourne "A" au lieu de 4
Il faut donc plutôt mettre un autre paramètre qui indique si $Rang est un caractère, un nombre, ou "" :
► Afficher le texte
Code : Tout sélectionner
Func _ChercheRang($String, $Rang, $TypeRecherche)
$Sortie = ""
$Len = stringlen($String)
$Split = stringsplit($String, "")
Switch $TypeRecherche
Case 1 ; un nombre
If $Rang > $Len Then
SetError(1)
Return ""
EndIf
$Sortie = $Split[$Rang]
Case 2 ; un caractère
If StringLen($Rang) <> 1 Then
SetError(2)
Return ""
EndIf
$CaractereExiste = 0
For $NumeroCaractere = 1 To $Len
If $Split[$NumeroCaractere] = $Rang Then
$Sortie &= $NumeroCaractere
$CaractereExiste = 1
EndIf
Next
If $CaractereExiste = 0 Then ; on ne peut pas faire le StringSplit() ci-dessous donc on met une erreur
SetError(3)
Return ""
EndIf
$Sortie = StringSplit($Sortie, "") ; <== modification : on obtient un tableau avec tous les emplacements du caractère
Case 3 ; un tableau
For $NumeroCaractere = 1 To $Len
$Sortie &= $NumeroCaractere & @TAB & $Split[$NumeroCaractere] & @LF
Next
EndSwitch
Return $Sortie
EndFunc
Re: [R] Lecture d'un caractère précis dans un fichier
Posté : dim. 09 mars 2008 21:19
par Tlem
La question était :
je voudrais lire un caractère précis dans un fichier, en connaisant son rang dans le fichier : existe-t-il une fonction pour le faire.
Est-ce que mon
post ne répond pas à la question ?
Re: [R] Lecture d'un caractère précis dans un fichier
Posté : ven. 14 mars 2008 18:49
par tolf
Tlem a écrit :Est-ce que mon
post ne répond pas à la question ?
Effectivement, le post de Tlem répond à la question. J'ai donc mis dans la partie Fonction un
nouveau topic mais je n'ai pas réussi à supprimer mon message plus haut.
Re: [R] Lecture d'un caractère précis dans un fichier
Posté : ven. 14 mars 2008 21:56
par Tlem
tolf a écrit :Tlem a écrit :mais je n'ai pas réussi à supprimer mon message plus haut.
Pas grave.
