Ignorer des lignes a la lecture d'un fichier text [Résolu]

Messages postés
138
Date d'inscription
vendredi 1 août 2003
Dernière intervention
16 juillet 2009
- - Dernière réponse : cs_zeguizmo
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Dernière intervention
16 juillet 2009
- 5 nov. 2005 à 19:07
Salut, je voudrais ignorer des lignes a la lecture d'un fichier text.

En réalité le fichier text est un fichier C# duquel je récupère des infos.

Les lignes a ignorer etant les commentaires ...

Jusque la c'est facile, mais le probleme c'est que je lis mes fichiers de la sorte



Private Function lire(fichier As String)



On Error Resume Next



Dim zone_text As String

Open fichier For Input As #1

DoEvents

zone_text = Input(LOF(1), #1)

Close #1

lire = zone_text



End Function



Et je ne peux pas lire ligne par ligne (les fichiers sont énormes et la
lecture ligne par ligne est bien trop longue) sinon le soft ne sert a
rien (sa rapidité est son atout)



Donc, est il possible en utilisant ma syntaxe d'ignorer certaines lignes rapidement ?



Merci

ZeGuizmo
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
72
3
Merci
Salut
Comme le dit PCPT, tu lis la totalité du fichier dans "zonetext", donc tout.
A toi de dépouiller le résultat pour éliminer les lignes de commentaire.
- Soit tu changes la manière de lire les données en les lisant ligne par ligne
Open ...
Do While Not EOF(1)
Line Input #1, Chaine
If Left(Trim(Chaine, 1), 1) <> ";" Then zoneText = zoneText & Chaine
Loop
Close #1
- Soit tu travailles sur ta chaine globale :
Dim Lignes() As String
Lignes = Split(zoneText, vbCrLf) ' Transforme chaine en lignes
For r = 0 To Ubound(Lignes)
' Si chaine commence par ; --> vide la ligne If Left(Trim(Lignes(r)), 1) ";" Then Lignes(r) ""
Next r
' Recompose la chaine
zoneText = Join(Lignes, vbCrLf)
' Elimine les doubles vbCrLf qui sont là à cause des lignes vides
zoneText = Replace(zoneText, vbCrLf & vbCrLf, vbCrLf)

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

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)

Dire « Merci » 3

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

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Messages postés
138
Date d'inscription
vendredi 1 août 2003
Dernière intervention
16 juillet 2009
3
Merci
Its works, je ne sais pas pourquoi mais avec vbcrlf ca marche pas, et avec chr(10) ca marche.



Merci beaucoup et a une prochaine fois :)

ZeGuizmo

Dire « Merci » 3

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

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
0
Merci
salut,
encore faut-il être certain de la syntaxe.
si le commentaire commence en début de ligne, tu peux alors chercher le VbCrLf & "//"
mais s'il y a un espace avant, etc.... tu ne pourras pas de cette manière.
dans la même idée, tu peux chercher sur tout le fichier (en variable) les "//" puis replace par rien du mid de cette position jusqu'au prochain VbCrLf.

et il faut penser aussi que si ces fichiers sont si ~énormes~, il te faut la RAM disponible au hauteur de la taille du fichier.

PCPT [AFCK]
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Dernière intervention
16 juillet 2009
0
Merci
Salut,

Merci jack c'est en fait ce qu'il me fallait, (le travail en lecture
ligne par ligne est trop long, mais c'est a cause du temps d'ouverture
du fichier texte) alors que le travail sur la variable est instantané



Je comprend bien la fonction mais celle ci ne marche pas.

En fait j'ai isolé le probleme, il vient du stockage dans la variable lignes

La fonction split(text, vbcrlf) n'a pas l'air de fonctionner.

Quand je lui demande de m'afficher ligne(r) par exemple, il m'affiche tout le texte.


Une solution ?

Merci encore.


ZeGuizmo
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Dernière intervention
16 juillet 2009
0
Merci
Une remarque qui peut avoir son importance, je suis sous VB 6 pas sous VB.NET

Ca changerait la donne ?


ZeGuizmo

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.