OVH Cloud OVH Cloud

Creation et acces aleatoire de fichiers binaire ?

2 réponses
Avatar
moi
Salut,

Est-il possible en VB de creer des fichiers binaires ? et d'y acceder en
aleatoire avec une fonction qui permette de se placer a l'octet pret dans le
fichier ?

a priori ni filesystemobject ni open # ne le permette sauf erreur ?


Merci de vos infos !!!!!

2 réponses

Avatar
ng
Salut,
filesystemobject


haaaaaaaa


ni open #


sisi

Pour les créer : Put ou même Print #k,sCh;...

Pour lire :

Dim k As Integer, bOctet As Byte, tblMoultOctet() As Byte
k = FreeFile
Open "c:windowsnotepad.exe" For Binary As #k
'recup un octet
Get #k, 78, bOctet
Debug.Print Hex$(78) & "=" & bOctet
'en recup plusieurs
ReDim tblMoultOctet(20)
Get #k, 79, tblMoultOctet
Close #k
For k = 0 To UBound(tblMoultOctet)
Debug.Print Hex$(79 + k) & "=" & tblMoultOctet(k)
Next

Pour un accès aléatoire, regarde du coté de Open ... For Random As ...

Nicolas.
"moi" a écrit dans le message de news:
bpitbu$gdc$
Salut,

Est-il possible en VB de creer des fichiers binaires ? et d'y acceder en
aleatoire avec une fonction qui permette de se placer a l'octet pret dans


le
fichier ?

a priori ni filesystemobject ni open # ne le permette sauf erreur ?


Merci de vos infos !!!!!




Avatar
Zoury
Salut toi! :O)

Est-il possible en VB de creer des fichiers binaires ? et d'y acceder en
aleatoire avec une fonction qui permette de se placer a l'octet pret dans


le
fichier ?



oui.

a priori ni filesystemobject ni open # ne le permette sauf erreur ?



Le FileSystemObject ne le permet pas. (tu ne devrais pas te servir de cet
"outil" dans un environnement autre que le script, consulte le lien suivant
pour plus de détail : http://faq.vb.free.fr/index.php?question6)


La syntaxe Open quant à elle permet la gestion des fichiers binaires.

Voici un exemple qui créer un fichier et qui le relit à partir du 2 ième
octet sur une longueur de 3.
'***
' Module1
Option Explicit

Private Sub Main()

' on créer le fichier
Call EcrireFichier("c:test.txt", "1234567890")

' on relit les octets 2, 3 et 4 du fichier
Debug.Print LireFichier("c:test.txt", 2, 3)

End Sub

Private Sub EcrireFichier(ByRef sFichier As String, ByRef sContenu As
String)

Dim hFile As Long

hFile = FreeFile
Open sFichier For Binary As #hFile
Put #hFile, , sContenu
Close #hFile

End Sub

Private Function LireFichier _
( _
ByRef sFichier As String, _
Optional ByRef lDebut As Long = 1, _
Optional ByRef lLongueur As Long = -1 _
) As String

Dim hFile As Long
Dim s As String

hFile = FreeFile
Open sFichier For Binary As #hFile

If (lLongueur = -1) Then lLongueur = LOF(hFile)
If (lDebut >= 0 And _
lLongueur >= 0 And _
Not lDebut + lLongueur - 1 > LOF(hFile)) Then
s = String$(lLongueur, Chr$(0))
Get #hFile, lDebut, s
End If

Close #hFile

LireFichier = s

End Function
'***

Note que tu peux utiliser le même fonctionnement avec un tableau d'octet au
lieu d'une chaine.

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous