TUTO VB6 : SUPPRIMER UNE LIGNE DANS UN FICHIER

cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009 - 4 juin 2004 à 23:32
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 10 déc. 2008 à 15:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22826-tuto-vb6-supprimer-une-ligne-dans-un-fichier

jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
10 déc. 2008 à 15:40
lol source pro
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 mars 2006 à 21:02
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.
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mars 2006 à 20:08
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
evilmajestik Messages postés 38 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 5 juillet 2005
1 déc. 2004 à 11:24
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_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
22 août 2004 à 13:34
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 juin 2004 à 23:48
Napster : ici je parle de fichier texte, pas de programmes.
De plus, si tu regardes bien, tu peux aussi supprimer un ligne en entrant le texte à supprimer.
cs_Napster Messages postés 76 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 19 septembre 2009
4 juin 2004 à 23:32
ben pour supprimer une ligne il faut preciser le numero de la ligne , suposent que que je veu supprimer une ligne d'un autre programme , et comment je vais savoire le numero de la ligne si je suis pas le createur de ce programme ????
Rejoignez-nous