1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
Private Sub BinaryCopy(strFilePathSource As String, strFilePathTarget As String)
Dim oStream
Dim iFile As Integer
Set oStream = New ADODB.Stream
oStream.Open
oStream.Type = 1
oStream.LoadFromFile strFilePath
iFile = FreeFile
Open "D:\essais1.bmp" For Binary As #iFile
' Cas 1: En renvoyant directement le flux binaire on se retrouve avec une concatenation
' en debut de fichier d'une chaine de 12 caractères " (d ".
' Put #iFile, , oStream.Read
' Cas 2: Si on tente de tronquer les 12 premier caractères on se retrouve avec un
' fichier complètement éroné, aussi bien avec Mid qu'avec MidB on perd la moitié des
' données... X(
' Put #iFile, , Mid(oStream.Read, 13)
' Put #iFile, , MidB(oStream.Read, 13)
' Cas 3: En convertissant d'abord le flux en unicode avant de le renvoyer dans le
' fichier, on se retrouve avec une concaténation en debut de fichier d'une chaine de 4
' caractères ""
' Put #iFile, , StrConv(oStream.Read, vbUnicode)
' Cas 4: En convertissant d'abord le flux en unicode puis en tronquant les 4 premier
' caractères avant de le renvoyer dans le fichier, on se retrouve avec un fichier dont
' les 4 premier caractères ont été corrompue.
' Put #iFile, , Mid(StrConv(oStream.Read, vbUnicode), 5)
' Cas 5: En convertissant d'abord le flux en unicode puis en tronquant les 4 premier
' caractères avant de le renvoyer dans le fichier, on se retrouve avec un fichier dont
' les 4 premier caractères ont été corrompue.
Put #iFile, , StrConv(Mid(oStream.Read, 5), vbUnicode)
Close #iFile
' Si on écrase les quatre premier octet avec une chaine contenant les 4 premiers
' caractères du fichier original, après avoir appliquer le cas 4 ou le cas 5, on se
' retrouve avec un fichier sain... (O_O)
iFile = FreeFile
Open "D:\essais1.bmp" For Binary As #iFile
Put #iFile, , "GIF89"
Close #iFile
Set oStream = Nothing
End Sub |
Partager