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 34
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
Rejoignez-nous