Problème lecture/ecriture fichier en binaire aidez moi svp

Résolu
retaks666
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007
- 21 déc. 2004 à 19:58
mythic_kruger
Messages postés
241
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005
- 8 juil. 2005 à 19:19
Bonjour, je cherche a faire un truc qui copie un fichier avec un buffer de 2Ko(16bytes), j'ai fait le code suivant, mais ça ne marche pas :'(
Quelqu'un a la solution?
Private Sub Command1_Click()
 ReDim Buffer(16) 'Redimmensionnement du tableau Buffer

Open "d:\test.txt" For Binary As #1 'Ouverture du fichier en binaire
        Do While True
            If position + 16 <= LOF(1) Then
                Get #1, position, Buffer
                position = position + 16
                MsgBox Buffer
                    Open "d:\test2.txt" For Binary As #2
                    MsgBox Buffer
                    Put #2, 1, Buffer
                    Close #2
            ElseIf position + 16 > LOF(1) And position < LOF(1) Then
                ReDim Buffer(LOF(1) - position) 'Redimmensionnement du tableau Buffer
                Open "d:\test2.txt" For Binary Access Write Shared As iCanal
                    Put #2, 1, Buffer
                Close #2
                Exit Sub
           End If
        Loop
Close #1
End Sub

4 réponses

retaks666
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

21 déc. 2004 à 20:37
non c'est bon j'ai trouvé:
position = 1
 ReDim Buffer(16) 'Redimmensionnement du tableau Buffer

Open "d:\test.txt" For Binary As #1 'Ouverture du fichier en binaire
        Do While True
            If position + 16 <= LOF(1) Then
                Get #1, position, Buffer
                position = position + 16
                    Open "d:\test2.txt" For Binary As #2
                        Seek #2, position
                        Put #2, 1, Buffer
                    Close #2
            ElseIf position + 16 > LOF(1) And position < LOF(1) Then
                ReDim Buffer(LOF(1) - position) 'Redimmensionnement du tableau Buffer
                Get #1, position, Buffer
                Open "d:\test2.txt" For Binary As #2
                    Seek #2, position
                    Put #2, position, Buffer
                Close #2
                Exit Sub
           End If
        Loop
Close #1
3
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
21 déc. 2004 à 21:21
il y a quand même plus simple sans être obligé de fermer et d'ouvrir les fichiers à chaque fois.

    Dim Reste    As Long
    Dim Lg       As Long
    Dim Buffer() As Byte

    Lg = 16
    ReDim Buffer(Lg - 1)

    Open "d:\test.txt" For Binary As #1
    Open "d:\test2.txt"For Binary As #2
    Reste = LOF(1)

    While Reste > 0
       If Reste < Lg Then Lg = Reste: ReDim Buffer(Lg - 1)
       Get #1, , Buffer
       Reste = Reste - Lg
       Put #2, , Buffer
       Wend

    Close #2
    Close #1


PS: 2ko = 2048 octets

Daniel
0
retaks666
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

21 déc. 2004 à 22:14
oui gobillot, mais je voulais dire 2o :p Et pour ce qui est de l'ouverture/fermeture, c'est que j'ai prévu ce code dans le cas de l'arrivée de donnée d'un winsock, qui empêche de laisser ouvert, voila tout ;)
0
mythic_kruger
Messages postés
241
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

8 juil. 2005 à 19:19
Si tu voulais dire 2 octets c'est 16 bits pas 16 bytes.
0