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

sebast_ 17 Messages postés vendredi 20 février 2004Date d'inscription 16 décembre 2007 Dernière intervention - 29 oct. 2007 à 19:21 - Dernière réponse : sebast_ 17 Messages postés vendredi 20 février 2004Date d'inscription 16 décembre 2007 Dernière intervention
- 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
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 30 oct. 2007 à 08:42
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Kristof_Koder
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 29 oct. 2007 à 19:48
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
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 29 oct. 2007 à 21:20
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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 oct. 2007 à 00:38
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
sebast_ 17 Messages postés vendredi 20 février 2004Date d'inscription 16 décembre 2007 Dernière intervention - 30 oct. 2007 à 18:24
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.