Modifier les lignes d'un fichier

miko500 Messages postés 188 Date d'inscription dimanche 29 octobre 2000 Statut Membre Dernière intervention 18 août 2005 - 3 mars 2004 à 20:17
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016 - 4 mars 2004 à 11:55
dabor salu,
voilà le problème, j'ai lintention de faire un programme permettan de modifier les lignes d'un fichier .cfg
dja vu d sources permettan d'écrire et de lire des lignes d un fichier mais pas de les modifier, je suis carément sur que sa doi avoir un rapport, mci davance pr la personne ki arrivera à me répondre

PS : désolé pour l écriture du type sms, mais là je suis pressé
Miko500

6 réponses

K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
3 mars 2004 à 22:31
en fait, on ne peut pas modifier les lignes d'un fichier parcequ'il est impossible de diminuer la taille d'un fichier. on peut remplacer des charactères ou en ajouter à la fin, mais c'est tout.
sa solution consiste à lire le fichier, modifier les données lues et réécrire tout le fichier par dessus l'ancien.

Procédure:

Tout d'abord lire le fichier
Dim MemoFile() as String
Dim NbLignes as Integer
Open "Monfichier" For Input as #1
While Not EOF(1)
if NbLignes = 0 then
ReDim MemoFile(0)
else
ReDim Preserve MemoFile(NbLignes)
End If
Line Input #1,MemoFile(NbLignes)
NbLignes = NbLignes  1
Wend
Close #1

Ce code va mettre le fichier en memoire temporaire dans un tableau

ensuite modifier le tableau
'exemple de suppression
'la ligne 5 par exemple 
'les lignes commençent à 0 et non à 1
For i = 5 To Ubound(MemoFile) - 1
MemoFile(i) = MemoFile(i + 1)
Next
Redim Preserve MemoFile(Ubound(MemoFile) - 1)

'exemple d'insertion
'ligne 5 toujours
Redim Preserve MemoFile(Ubound(MemoFile) + 1)
For i = Ubound(MemoFile) To 6 Step - 1
MemoFile(i) = MemoFile(i - 1)
Next
MemoFile(5) = "MA NOUVELLE LIGNE"


dernière étape, réécrire le fichier:
Open "MonFichier" For Output as #1
For i = 0 To Uboynd(MemoFile)
Print #1,MemoFile(i)
Next
Close #1


Voila, il n'y à pas tout mais tu devrai déjà trouver ton bonheur avec ça

K@zuya 8-)
0
miko500 Messages postés 188 Date d'inscription dimanche 29 octobre 2000 Statut Membre Dernière intervention 18 août 2005
3 mars 2004 à 22:37
Oui, merci pour ton aide, mais le truc, c'est que si tu dois faire tout ça pour des centaines de lignes (j'exagères, disons une 30aine de lignes), ben c'est long, parcken fait ce ke je ve faire, c'est modifier le fichier config.cfg du ju counter-strike pour faire des binds, et le fait est kil ya une ligne pour chak bind donc c'est long à faire

Miko500
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
4 mars 2004 à 08:38
30 lignes, c rien du tout. Juste le temps de dire "ouf", tu pourrais en écrire 3000 ! :o)

tente donc ceci et regarde le temps d'execution :
-------------------------------------------------
Private Sub Command1_Click()
Dim i As Long

Open "c:\toto.txt" For Output As #1
For i = 1 To 3000
Print #1, "kdsjf hdsfsdkjhsfdkjg fskghgqkjg sfkjg hqskgh "
Next i
Close #1
MsgBox "terminé !", vbInformation
End Sub

Manu
0
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
4 mars 2004 à 10:20
dans mon exemple, je modifie la ligne 5 mais tu ne sai pas combien de liges comporte le fichier, il pourrait bien en comporter 40 000, sa modifirai la ligne 5 sans retoucher les autres et la vitesse d'operation pour ecrire 40 000 lignes dans un fichier doit durer 5s par la, alors t'en fait pas.

K@zuya 8-)
0

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

Posez votre question
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
4 mars 2004 à 10:23
hum, ah nan, sa y est, j'ai compris tu pense qu'il faut tout refaire a chaque fois que tu veut modifier une ligne, mais non !

Bon, je vais Pondre un module sur la modification de fichiers.

K@zuya 8-)
0
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
4 mars 2004 à 11:55
Voici la Source que j'ai postée, elle devrai te satisfaire

K@zuya 8-)
0
Rejoignez-nous