cs_zeguizmo
Messages postés138Date d'inscriptionvendredi 1 août 2003StatutMembreDernière intervention16 juillet 2009
-
2 nov. 2005 à 16:40
cs_zeguizmo
Messages postés138Date d'inscriptionvendredi 1 août 2003StatutMembreDernière intervention16 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 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 nov. 2005 à 19:27
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)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 2 nov. 2005 à 16:52
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.
cs_zeguizmo
Messages postés138Date d'inscriptionvendredi 1 août 2003StatutMembreDernière intervention16 juillet 2009 5 nov. 2005 à 18:02
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
Vous n’avez pas trouvé la réponse que vous recherchez ?