[R] Lecture d'un caractère précis dans un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tolf
Niveau 7
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

#1

Message 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
Modifié en dernier par tolf le ven. 29 févr. 2008 18:31, modifié 1 fois.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture d'un caractère précis dans un fichier

#2

Message par Tlem »

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é".
tolf
Niveau 7
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

#3

Message par tolf »

Par "son rang", j'entend sa position dans le fichier. Par exemple, dans le fichier suivant :

Code : Tout sélectionner

ABCD
"A" est le caractère de rang 1, "B" celui de rang 2, etc...
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture d'un caractère précis dans un fichier

#4

Message par Tlem »

Si c'est pour utilisez comme vous l'indiquez, alors utilisez ceci :

Code : Tout sélectionner

FileRead ( filehandle or "filename" [, count] )
et donc pour lire le 4ieme caractère du fichier test.txt :

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é".
tolf
Niveau 7
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

#5

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

Code : Tout sélectionner

FileRead($filename)
- après le dernier caractère lu si on utilise :

Code : Tout sélectionner

$file = FileOpen($filename)
FileRead($file)
Donc la fonction "FileRead" ne permet pas de lire un caractère précis.
En revanche, j'ai trouvé un autre moyen :

Code : Tout sélectionner

StringMid(FileRead($filename), $numero, 1)
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture d'un caractère précis dans un fichier

#6

Message 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])
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é".
ani
Niveau 11
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

#7

Message 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 ?
tolf
Niveau 7
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

#8

Message 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
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
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

#9

Message 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 ?
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é".
tolf
Niveau 7
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

#10

Message 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.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
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

#11

Message par Tlem »

tolf a écrit :
Tlem a écrit :mais je n'ai pas réussi à supprimer mon message plus haut.
Pas grave. ;)
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é".
Répondre