Manipulation de Fichier

cs_veve Messages postés 20 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 3 janvier 2004 - 7 déc. 2003 à 12:32
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016 - 7 déc. 2003 à 21:04
Quelle est la methode la plus simple pour aller ecrire dans une info dans un fichier X a la ligne 134 par exemple...

Je sais que le mieux serait certainement de constituer au fur et a mesure le fichier avec les differents elements recuperes sur la machine...

Merci de votre aide

veve

6 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
7 déc. 2003 à 13:22
Tout depend de ce que tu veus ecrire dedans

si c'est un nombre :

dim MonNombre as long
MonNombre = 123456789
open x for binary as #1
put #1,134,MonNombre
Close #1

Si c'est du texte :

dim MonTexte as string
MonTexte = "MonTexteIci"
put #1,134,MonTexte
Close #1

@+

E.B.
0
cs_veve Messages postés 20 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 3 janvier 2004
7 déc. 2003 à 14:55
Merci pour ta reponse,

mais jai essaye ton code comme suit et ca marche pas

Private Sub Command3_Click()
Dim MonNombre As Long
MonNombre = 123456789
Open "c:\fichier.txt" For Binary As #1
Put #1, 12, MonNombre
End
Close #1
End Sub

Or

Private Sub Command3_Click()
Dim MonTexte As String
MonTexte = "MonTexteIci"
Open "c:\fichier.txt" For Binary As #1
Put #1, 12, MonTexte
End
Close #1
End Sub

si j'ai rate un episode ???

on vbs Il faut :
- lire le fichier définitif en MEMOIRE
(en stockant chaque ligne dans un tableau p.ex.)
dim line()
nl=0
set f=fso.OpenTextfile(mainfile,forReading)
while not f.AtEndOfStream
redim preserve line(nl+1)
line(nl) = f.readline
nl=nl+1
wend
...

- par une boucle, décaler d'une position vers le bas
tous les enregistrements à partir de l'indice "n"
redim preserve line(nl+1)
for i=nl to n step -1
line(i+1)=line(i)
next

- insérer le résulat du log en "n"
line(n)=newline

Merci
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
7 déc. 2003 à 15:03
Dans ce cas utilise ceci :

dim Buffer as string

open Fichier for binary as #1
buffer=string(lof(1),0)
get #1,,buffer
close #1

buffer=left(buffer,134) & "MonTexte" & right(buffer,len(bvuffer)-134)

open fichier for binary as #1
put #1,,buffer
close #1

@+

PS: ne met pas de "End" apres put sinon ton
prog se termine sans fermer le fichier

E.B.
0
cs_veve Messages postés 20 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 3 janvier 2004
7 déc. 2003 à 15:14
OK mais maintenant, j'ai un runtime error 5 sur la ligne suivante :

buffer=left(buffer,134) & "MonTexte" & right(buffer,len(bvuffer)-134)

je me demande si je vais y arriver

merci
0

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

Posez votre question
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
7 déc. 2003 à 15:18
Oui c'est surement par ce que ton fichier ne fait pas 134 octets il est peut etre plus petit !

dans ce cas fait le test suivant :

if len(buffer)<134 then

buffer = buffer & "MonText"

else
'...
endif

@+

E.B.
0
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
7 déc. 2003 à 21:04
avec sa plus de soucis:

Private Sub WriteLine(File As String, Word As String, Ligne As Integer)
Dim Chaine As String
Dim Compt As IntegerIf Dir$(File) vbNullString Or File vbNullString Then Open File For Output As #1: Close #1
Open File For Input As #1
Open File & "2" For Output As #2
    Do
        Compt = Compt + 1
        If EOF(1) Then
            If Compt < Ligne Then
                For i = Compt To Ligne - 1
                    Print #2, vbNullString
                Next
                Print #2, Word
            End If
            Exit Do
        End If
        If Compt = Ligne Then Print #2, Word
        Line Input #1, Chaine
        Print #2, Chaine
    Loop
Close #1, #2
Kill File
Open File For Output As #1
Open File & "2" For Input As #2
    Do While Not EOF(2)
        Line Input #2, Chaine
        Print #1, Chaine
    Loop
Close #1, #2
Kill File & "2"
End Sub

K@zuya 8-)
0
Rejoignez-nous