Tuto vb6 : supprimer une ligne dans un fichier

Soyez le premier à donner votre avis sur cette source.

Vue 18 251 fois - Téléchargée 2 271 fois

Description

Une idée avec Proviste : créer un module de fonction identique en VB6 et en VB.NET --> Voici la version VB6.
( Version .Net ici http://www.vbfrance.com/code.aspx?id=22827 )

Cette fonction, logée dans un module (facilement réutilisable) permet de supprimer :
- Soit une ligne, en précisant son numéro
- Soit du texte, en précisant le texte
Parmi les options, on peut choisir :
- Le fichier de destination (différent ou identique à l'original)
- Le type de comparaison (insensible aux majuscules ou pas)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Alain Proviste
Messages postés
910
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
1 -
evilmajestik
Messages postés
38
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
5 juillet 2005
-
et pour supprimer juste un caractère donné faut faire comment ?
J'ai une ligne avec des " et je voudrais les supprimer dans le fichier texte avant des les importer dans ACCESS.

Merci.
cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58 -
John7 disait :
Bonjour jack, voilà,je me sert de votre source pour supprimer 2 lignes dans un fichier texte. La première(là il n'y a pas de problème) et la dernière. Pour l'instant je passe par le texte de la dernière ligne car j'ai un fichier test mais sinon c'est jamais le même texte de fin et bien entendu c'est jamais la même longueur de texte !! Faut-il passer le fichier par une nouvelle boucle et s'arréter à la fin du fichier-1 pour avoir la dernière ligne ou une autre solution plus en rapport avec votre source ? J'espère que vous me répondrez, en attendant...Trés bonne journée à vous .

Je réponds ... euh
Dans ton cas, tu ne connais pas le contenu de la ligne ni son numéro.
Il faut alors charger tout le fichier :
Open "monFichier.txt" For Binary As #1
Temp$ = Space(FileLen("monFichier.txt"))
Get #1, , Temp$ ' On lit tout le fichier d'un coup -> Temp
Close #1
Dim Tableau() As String
Tableau = Split(Temp$, vbCrLf) ' Mets toutes les lignes dans un tableau
' La dernière ligne est dans Tableau(UBound(Tableau))
' Il suffit donc de réécrire le fichier, ligne par ligne, sans aller jusqu'au bout :
Open "monFichier.txt" For Output As #1
For r = 0 To (UBound(Tableau) - 1)
Print #1, Tableau(r)
Next r
Close #1
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Le Split va engager quasi 2,5 fois en mémoire la taille du fichier, ne passera pas si le fichier est gros, manque de mémoire assuré. Niveau temps de traitement c'est aussi la cata.
Il y a des cas (très souvent en VB) où il convient de se faire une vraie dll qui traitera cela en qlqs millisecondes.
- buffer de 4 Ko (suffisant pour 2 lignes) => VirtuallAlloc.
- Ouverture fichier => CreateFile.
- Taille fichier => GetFileSizeEx.
- Si taille > 4 Ko, aller au bout - 4 Ko => SetFilePointer.
- Remplir buffer => ReadFile (qui dira taille lue).
- Repositionner même place que avant lecture => SetFilePointer.
- Pointeur au bout du buffer, remonter tant que (Ptr > buffer) ET (2 sauts ligne non rencontrés).
- Si Ptr > buffer alors tamponner (Ptr - buffer) octets => WriteFile.
- Tronquer à la position actuelle du ptr de fichier => SetEndOfFile.
- Fermer fichier => CloseHandle.

Voila les 2 dernières lignes enlevées en un temps difficilement mesurable et sur nimporte quelle taille de fichier.
jihednond
Messages postés
144
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
3 septembre 2011
-
lol source pro
Commenter la réponse de cs_Napster

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.