Ouvrir un fichier en mode binaire

MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 - 23 déc. 2004 à 18:43
VBREP Messages postés 69 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 4 mars 2007 - 2 janv. 2005 à 18:15
J'ai cherché sur le site et j'ai trouvé. Seulement, à partir d'un certain de nombre d'octects, il ne les mémorisent pas tous :(

En gros, comment ouvrir un fichier en binaire et stocker les données dans une variables ?

-=Ar$£nik=-

15 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 déc. 2004 à 18:52
Dim MaVar as UnTypeQuelconque
Open "MonFic.binaire" For Binary as #1 Len = Len(MaVar)
While not eof(1)
  Get #1,,MaVar
  ' Traitement de MaVar içi
Wend
Close #1

Ce code lit tous les enr contenu dans le fichier

Christophe R.
0
MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 2
23 déc. 2004 à 19:09
Dsl, mais ton code ne marche po, pour 2 raisons :

La 1ère :
Len = Len(MaVar)
Le 1er Len ne pointe sur aucune chaine :p

La Seconde :
La boucle est infini :(

Help please !

-=Ar$£nik=-
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
23 déc. 2004 à 19:09
Salut, tu veux stocker tout ton fichier dans une seule variable ?

Tout dépend de sa taille mais s'il est pas tros gros, tu peux coder :

dim TaVar as string
open TonFichier for input as #1
TaVar = input lof(1), #1
close #1


Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
23 déc. 2004 à 19:18
En reprenant le code de crenaud76, tu peux faire aussi :

Dim MaVar as byte
ou
dim MaVar as string * 1
Open "MonFic.binaire" For Binary as #1 Len = Len(MaVar)
While not eof(1)
Get #1,,MaVar ' là, tu lis 1 par 1
' traitement octet par octet
' ou ajout genre : var = var & MaVar
' .........
Wend
Close #1

Cordialement, CanisLupus
0

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

Posez votre question
MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 2
23 déc. 2004 à 19:35
beuh rien ne marche :(

-=Ar$£nik=-
0
MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 2
23 déc. 2004 à 19:46
je suis dsl, sa doit être moi mais je vous assure, j'y met du mien

-=Ar$£nik=-
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
23 déc. 2004 à 19:51
Bon, un peu plus d'explik serait bienvenu.

Taille de ton fichier ? ...
Type de ton fichier ? ...
Quelle source du site as tu trouvé ? ...
Quel est ton but ? ...
....

@+

Cordialement, CanisLupus
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 déc. 2004 à 19:53
essayes ça:

Dim s As String
Open "MonFichier" For Binary As #1
s = Space$(LOF(1))
Get #1, , s
Close #1


Daniel
0
MaxSoldier Messages postés 289 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 28 février 2009 2
23 déc. 2004 à 20:04
Merci CanisLupus j'ai enfin reussi !

Dim StrBuffer As String * 1
Dim Total As String

Open Fichier For Binary As #1 Len = Len(StrBuffer)
While Not EOF(1)

Get #1, , StrBuffer
Total = Total & StrBuffer

Wend

Close #1


-=Ar$£nik=-
0
VBREP Messages postés 69 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 4 mars 2007
2 janv. 2005 à 04:16
salut Gobillot

quand utilise ton code
j'ai erreur execution 7
memoire insuffisnte

ta une solution

merci
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 janv. 2005 à 11:14
tu dois avoir un très gros fichier alors !
2éme solution lire dans un tableau de Bytes.
sinon essayer de libérer de la mémoire mais si pas suffisant pas d'autre solution que de lire le fichier en plusieurs fois.

Dim Buf() As Byte
Open Nomfichier For Binary As #1
     ReDim Buf(LOF(1) - 1)
     Get #1, , B
     Close #1


Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 janv. 2005 à 11:16
oups ! correction
je voulais dire Get #1, , Buf

Daniel
0
VBREP Messages postés 69 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 4 mars 2007
2 janv. 2005 à 13:51
salut Gobillot

peut tu expliquer ton code

merci
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
2 janv. 2005 à 14:12
au lieu de lire dans une chaîne je lis dans un tableau de Bytes:
Dim Buf() As Byte
les () signifie que c'est un tableau mais il n'est pas encore dimentionné donc c'est un tableau dynamique, le type Byte peut contenir juste un seul caractère valeur 0 à 255.
ReDim Buf(LOF(1) - 1)
redimentionne le tableau à la longueur du fichier -1 puisque le tableau commence à l'index zéro.
Get #1, , Buf
lecture de tout le fichier dans le tableau, chaque caractère du fichier sera accessible séparément, le premier caractère sera dans Buf(0), le dixième dans Buf(9), etc ..., le dernier sera dans Buf(UBound(Buf))

en espérant t'avoir aidé

Daniel
0
VBREP Messages postés 69 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 4 mars 2007
2 janv. 2005 à 18:15
affiche que que des 00000000
0
Rejoignez-nous