Supprimer le le crlf de la dernière ligne

Résolu
yo612 Messages postés 16 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 19 juillet 2007 - 25 mars 2007 à 22:01
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 26 mars 2007 à 22:18
Bonjour,

Voilà j'ai ouvert un fichier, je l'ai modifié et je l'enregistre sous un nouveau nom mais je ne veux pas de crlf à la fin du fichier, or je crois que c'est par défaut dans le monde windows. Comment puis-je faire ?

Voici un bout de mon code : (Les variables du type NewFile, i, LireFin ont été déclarés comme string)
LireFin correspond à une variable faisant la somme des modifications faites au fichier source.

Lire Fin = Lire + Lire1 + Lire2

Newfile = frmMain.Text8.Text
    'pour obtenir un No de fichier disponible
    i = FreeFile()
    'Ouvre le fichier destination
    'pour écriture en remplacant les données déjà présentes
    '(s'il n'existe pas, celui-ci est crée)
    Open Newfile For Output As #i
    Print #i, LireFin
    'ferme le fichier suite à la commande open
    Close #i

9 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 mars 2007 à 08:31
Bonjour,

Fans ma famille, on a l'habitude de mettre un simple point-virgule à la fin de l'instruction Ptint dont on peut pas qu'elle provoque un saut de ligna une fois l'écriture faite.

Du genre (pour la dernière ligne à écrite) :

Print #i, toto ;
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 mars 2007 à 04:59
Ça, on ne sait pas vraiment ce que ça veut dire ...
Lire Fin = Lire + Lire1 + Lire2

Tu pourrais charger  ton fichier dans une variable String, puis une fois tes modifications effectuées, tu réécris ta variable dans le nouveau fichier moins 2 caractères (je pense que c'est 2 pour un vbCrLf...)

Et le dernier vbCrLf n'est pas par défaut sous Windows.
Tout dépend comment le texte est écrit dans ce fichier

MPi
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 mars 2007 à 06:13
Salut,

oui, le vbCrLf vaut 2 caractères (le 10 et le 34, mais pas sûr des numéros).
Donc LireFin = Mid(LireFin, 1, Len(LireFin) - 2)
OU    LireFin = MidB(LireFin, 1, LenB(LireFin) - 4)

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2007 à 12:14
rien à ajouter, jmfmarques...

a noter qu'une fois de plus, ce comportement de l'instruction Print est très probablement décrit dans la documentation, que bien peu de gens lisent avant de poser une question....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yo612 Messages postés 16 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 19 juillet 2007
26 mars 2007 à 21:09
Bonsoir,
Je ne peux pas faire :
LireFin = Mid(LireFin, 1, Len(LireFin) - 2)
OU    LireFin = MidB(LireFin, 1, LenB(LireFin) - 4)
car le crlf n'est pas dans ma chaine LireFin mais apparait uniquement après le print dans le fichier. Donc j'en déduis que c'est lors de l'enregistrement que ce crlf est crée pour indiquer un EOL et EOF.

Donc je vais opter pour le ;

Et puis non le ; n'est pas décrit dans la documentation, du moins pas dans le msdn vb6, ou du moins par de façon à pouvoir être clairement compris

Et puis si c'est écrit quelquepart de manière intelligent, on ne peut pas tout savoir, surtout quand on débute, d'où l'utilité des forums qui sont là pour conseiller et aider mais je pense que certains l'oublient vite.

Enfin dans le msdn, on peut trouver à l'index print#, instruction :
<< Indiquez un point-virgule pour placer le point d'insertion immédiatement après
le dernier caractère affiché...>>
De là, j'aurais en effet du en déduire que... que quoi ???

Merci à ceux qui m'on répondu de manière constructive

Je viens d'essayer et ca marche du tonnerre de Zeus .
J'ai bien ma dernière ligne qui contient en EOL : none alors qu'avant je lisais en EOL : CRLF avec un éditeur héxa. Et c'est bien None qu'il me faut pour transférer ce fichier crée vers une appli qui attend ça.

MERCI !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 mars 2007 à 21:32
Bonsoir, yo612,

permet donc au vieux de préciser 3 petites choses :

1) tu as un peu raison : ce n'est pas toujours facile de bien lire et comprendre ce qui est écrit. Mais onb prend son temps, on teste, on lit et relit...
2) la remarque de Renfield était tout à fait justifiée, contrairement à ce que te laisse exprimer ton sentiment de révolte
3) Il est vraisemblable que Renfield, comme moi, n'a appris que tout seul (alors que même internet n'existait pas) et que, comme moi, il a dî tout lire patiemment, tout tester patiemment...


C'est celà, précisément, vois-tu, qui fait que des gars comme Renfield (sans lesquels tu crierais aujourd'hui "au secours" dans un désert) te sont indispensables et qu'ils ont un peu le droit de te "bousculer" pour ton bien. Je te le dis en toute amitié. ...


Apprends donc à saluer Renfield...ne serait-ce que pour sa générosité, qui se mesure au nombre d'aides qu'il a données et donne encore et encore ...
0
yo612 Messages postés 16 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 19 juillet 2007
26 mars 2007 à 22:05
Oui oui tu as raison, il faut un peu bousculer ceux qui débutent, sinon ils attendraient que quelqu'un leur ponde leur code.

Mais pour ma part, je ne demande que rarement un coup de main, c'est pour dire que j'ai beaucoup lu, je lis beaucoup et des fois plongé dans mes pages de code, il manque un truc tout simple qu'on ne trouve pas du style un point virgule alors que j'avais fait le plus dur avec des split imbriqués dans des select case eux-mêmes réimbriqués dans des splits....
Mais j'aprends tout seul, personne de mon boulot ne programme, personne de mon entourage donc JE REMERCIE TOUT CEUX QUI M'ONT REPONDU !!!!

Et puis un coup de pied dans le c.. ca fait pas de mal de temps en temps quoique à mon âge avancé, ca commence à briser menu menu les reins

Fin du troll :
Et merci encore
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 mars 2007 à 22:06
une naissance et hop, 30 ans de plus ^^
que le temps passe vite
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 mars 2007 à 22:18
Salut PCPT ,

Hé... oui....

Garçon ou fille ?

Tant pis pour les 30 ans de + . Félicitations !
0
Rejoignez-nous