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

cs_zeguizmo 138 Messages postés vendredi 1 août 2003Date d'inscription 16 juillet 2009 Dernière intervention - 2 nov. 2005 à 16:40 - Dernière réponse : cs_zeguizmo 138 Messages postés vendredi 1 août 2003Date d'inscription 16 juillet 2009 Dernière intervention
- 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
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 nov. 2005 à 19:27
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Meilleure réponse
cs_zeguizmo 138 Messages postés vendredi 1 août 2003Date d'inscription 16 juillet 2009 Dernière intervention - 5 nov. 2005 à 19:07
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

Merci cs_zeguizmo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 2 nov. 2005 à 16:52
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]
cs_zeguizmo 138 Messages postés vendredi 1 août 2003Date d'inscription 16 juillet 2009 Dernière intervention - 5 nov. 2005 à 18:02
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
cs_zeguizmo 138 Messages postés vendredi 1 août 2003Date d'inscription 16 juillet 2009 Dernière intervention - 5 nov. 2005 à 18:28
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.