horzy
Messages postés30Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention16 juillet 2007
-
4 juin 2007 à 18:02
horzy
Messages postés30Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention16 juillet 2007
-
5 juin 2007 à 15:18
Bonjour,
J'explique mon pb :
J'ai un fichier texte du type :
voila le code que j'ai écris :
Open mon_fichier For Input As #num
Line Input #num, Ligne
While Not Eof(num)
replace(Ligne, " 00000000" & VbCr, " " & vbCr")
Print #num, Ligne
Wend
Close #num
mais ca marche pas !
Comment faire pour lui faire comprendre que ce sont les fins de lignes avec des zéro que je veux remplacer par des blancs et pas les milieux de lignes avec zeros? est-ce la bonne démarche ?
Merci de votre aide
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 4 juin 2007 à 18:19
Bonjour,
Print #num est de surcroît une instruction dans le fichier, alors que tu l'as ouvert en lecture !
Il te faut :
1) ouvrir ton fochier en lecture
2) ouvrir un autre fichier temporaire en écriture
3) lire ligne par ligne et remplacer tes 0 finaux par rien et écrire chaque ligne par Print dans le fichier temporaire
4) détruire ton 1er fichier
5) renommer le second avec le nom qu'avait le 1er
Pour ce qui est maintenant de la suppression des 000 terminaux, le plus simple est encore d'utiliser instrev pour relever la position du dernier espace et de ne prendre que ce qui ce trouve jusqu'à cette position - 1 (avec Left, par exemple)
hvb : je ne suis pas d'accord avec de que tu as écrit. le line input exclut le saut de ligne !)
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 5 juin 2007 à 09:19
Salut, pour moi je dirais qu'il suffit de changer le contenu de l'argument ligne en isolant le 4 ème élement de la ligne (sauf si le format de la ligne n'est pas constant.
ligne = mid(ligne, 34, 9 ) 'j'ai du mal a compter donc je me suis peut etre trompé dans les chiffres mais le principe est la.
Ligne = replace(Ligne, " 00000000" & VbCr, " " & vbCr")
Ou sinon, la fonction Split pourrait aider aussi, ou Right enfin vous voyez le principe quoi..
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 4 juin 2007 à 18:45
jmfmarques : je ne fesait que corriger son replace "dans le vide", qui s'averait être le principal problème de son code.
j'avoue ne pas avoir reflechis à son algo ^^
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 4 juin 2007 à 18:53
je vois meme que je n'avais meme pas lu son message en entier, desolé ^^
C'est pas hyper propre, mais il suffirait d'ajouter un detrompeur à la fin de chaque ligne lu, et de faire un replace en ajoutant le detrompeur à la chaine recherché.
Mais si supprimer les caractères suffit, alors effectue un TrimEnd avec en parametre le caractère 0 sur chaque ligne.
Cette fonction n'existe en native qu'en vb.net mais pas en VB6. Cependant, un type à posté l'equivalent sur codyx :
http://www.codyx.org/snippet_fonction-trim-permettant-choisir-texte-supprimer_103.aspx