[R] Lecture d'un caractère précis dans un fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
[R] Lecture d'un caractère précis dans un fichier
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
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
Modifié en dernier par tolf le ven. 29 févr. 2008 18:31, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lecture d'un caractère précis dans un fichier
Qu'entendez vous par : 'son rang' ?
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é".
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é".
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lecture d'un caractère précis dans un fichier
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...
Code : Tout sélectionner
ABCD- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lecture d'un caractère précis dans un fichier
Si c'est pour utilisez comme vous l'indiquez, alors utilisez ceci :
et donc pour lire le 4ieme caractère du fichier test.txt :
Code : Tout sélectionner
FileRead ( filehandle or "filename" [, count] )Code : Tout sélectionner
FileRead ( "test.txt", 4)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é".
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é".
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lecture d'un caractère précis dans un fichier
Bonjour,
J'ai consulté l'aide et pour le paramètre "count", ils disent :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 :
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 modeJ'ai testé l'exemple et en fait, "count" correspond au nombre de caractères à lire :
- depuis le début si on utilise :
Code : Tout sélectionner
FileRead($filename)Code : Tout sélectionner
$file = FileOpen($filename)
FileRead($file)En revanche, j'ai trouvé un autre moyen :
Code : Tout sélectionner
StringMid(FileRead($filename), $numero, 1)- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lecture d'un caractère précis dans un fichier
Exacte, j'ai été trop rapide pour la réponse.tolf a écrit :Donc la fonction "FileRead" ne permet pas de lire un caractère précis.
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])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é".
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é".
-
ani
- Niveau 11

- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [R] Lecture d'un caractère précis dans un fichier
::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
ou bien dans la condition If/Endif
tu peux aussi écrire le code de cette manière (on gagne quelque ligne ^^-
j'espere que c'est bon 
commentaire ?
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
EndFuncCode : 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
EndFuncCode : 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
EndFunccommentaire ?
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [R] Lecture d'un caractère précis dans un fichier
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 :
Il faut donc plutôt mettre un autre paramètre qui indique si $Rang est un caractère, un nombre, ou "" :
Code : Tout sélectionner
$Texte = "ABC1D"
ConsoleWrite(_test($Texte,"1")) ;<== retourne "A" au lieu de 4► Afficher le texte
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Lecture d'un caractère précis dans un fichier
La question était :
Est-ce que mon post ne répond pas à la question ?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.
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é".
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é".
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [R] Lecture d'un caractère précis dans un fichier
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.Tlem a écrit :Est-ce que mon post ne répond pas à la question ?
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Lecture d'un caractère précis dans un fichier
Pas grave.tolf a écrit :Tlem a écrit :mais je n'ai pas réussi à supprimer mon message plus haut.
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é".
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é".
