Lecture caractère par caractère [Résolu]

Messages postés
17
Date d'inscription
vendredi 20 février 2004
Dernière intervention
16 décembre 2007
- - Dernière réponse : sebast_
Messages postés
17
Date d'inscription
vendredi 20 février 2004
Dernière intervention
16 décembre 2007
- 30 oct. 2007 à 18:24
Bonsoir à tous,

Je cherche une méthode efficace afin de pouvoir lire un fichier texte caractère par caractère, dans le but de supprimer les retours chariots du fichier en entrée...

J'ai bien trouvé la méthode "Line" qui permet d'obtenir une ligne complète présente dans le fichier mais il se trouve que le fichier texte tout est pratiquement sur une seule ligne séparé par des retours chariots :(

Merçi d'avance à tous
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
920
Date d'inscription
vendredi 3 août 2007
Dernière intervention
27 octobre 2008
3
Merci
Deux replace$() suffiront : un pour vbCr et un pour vbLf :
Buffer = Replace$(Buffer, vbCr, "")
Buffer = Replace$(Buffer, vbLf, "")

Ou même en une seule instruction :
Buffer = Replace$(Replace$(Buffer, vbCr, ""), vbLf, "")

Merci Kristof_Koder 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Kristof_Koder
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Salut
En fait, il faut que tu ouvres ton fichier comme un fichier bianire et que tu formattes la variable de destination comme n'ayant qu'un caractère :
   Dim sBuffer As String * 1   ' Un seul char
   Open monFichier For Binary Access Read As #1
   Do While Not Eof(1)
      Get #1, , sBuffer
      ' Ici, ta détection et ton traitement
   Loop
   Close #1

Pour réécrire ton fichier sans les caractères que tu veux exclure, il faudra ouvrir un fichier temporaire de destination avec la même méthode (For Binary Access Write) et en utilisant Put à la place de Get.
Je te laisse le soin de mélanger les deux pour écrire au même ryhtme que tu lis les octets.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Code lines colored alamano
Commenter la réponse de cs_Jack
Messages postés
920
Date d'inscription
vendredi 3 août 2007
Dernière intervention
27 octobre 2008
0
Merci
Sauf que perso, je ferais plutôt un chargement en une seule fois dans une variable mémoire, pour ensuite traiter par un Replace$() les vbCrLf.
Cla risqurait de donner de meilleures performances ...

Dim Buffer As String
Dim fn As Long

fn = Freefile
Open "Fichier.txt" For Input As #fn
Buffer =Input(LOF(fn), #fn)
Close #fn
Buffer = Replace$(Buffer, vbCrLf, "")
Open "AutreFichier.txt" For Output As #fn
Print #fn, Buffer
Close #fn

Ca devrait être ok avec ca.
Commenter la réponse de Kristof_Koder
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Excellente idée
Penser que les sauts de page ne sont pas toujours des vbCrLf mais aussi des vbCr ou vbLf seuls.
Il suffit donc de répéter le Replace en trois avec chaque valeur.
Commenter la réponse de cs_Jack
Messages postés
17
Date d'inscription
vendredi 20 février 2004
Dernière intervention
16 décembre 2007
0
Merci
Merçi beaucoup à vous deux pour vos réponses claires et précises.
Commenter la réponse de sebast_

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.