OVH Cloud OVH Cloud

Caractère Null et fichier bin ???

7 réponses
Avatar
X
Bonjour,

Je n'y comprends rien, je mets dans un fichier binaire la constante
vbNull, et je la retrouve sur 4 octets ??? Dans d'autres cas elle vaut 1 (je
crois que c'est sa valeur VB, 0 étant vide et Null étant 1, lol)...

En fait, mon problème est comment générer la valeur Nulle (ascii 0)
dans 1 fichier binaire???

Je fais juste quelques tests, voici le résultat:

Dim pf As Integer
Dim x As Integer
Dim a As String
pf = FreeFile
Open "_null.fic" For Binary As pf
x = vbNull
Put pf, 1, x
Close pf
ÇA DONNE -> 1 + 0 + 0 + 0 = 4 octets ???
----------------
pf = FreeFile
Open "_null_2" For Binary As pf
a = "f"
x = vbNull
a = a & x
Put pf, 1, a
Close pf
ÇA DONNE -> 102 + 49 (ascii) = 2 octets ??? (49 = "1" ???)
---------------
pf = FreeFile
Open "_null_3" For Binary As pf
x = vbNull
a = x & "f"
Put pf, 1, a
Close pf
ÇA DONNE -> 49 + 102 (scii)...


Merci beaucoup, au revoir et à bientôt :o)
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
------------------------------------------------------------------------------------

7 réponses

Avatar
Renfield
ne pas confondre VbNull et VbNullChar ...
Avatar
X
Bonjour,

Merci :!o)

Oui mais encore, moi je voudrais avoir le Null ascii 0, soit
sign??? 0ascii 00h 00000000b
Et non pas le vide (rien), ceci sur 1 octet en fichier bin
Comment faire ???

-----------

"Renfield" a écrit dans le message de news:

ne pas confondre VbNull et VbNullChar ...



Avatar
X
En faisant:

Dim pf As Integer
Dim a As String * 1
pf = FreeFile
Open "_null_99.fic" For Binary As pf
a = vbNullChar
Put pf, 1, a
Close pf

J'obtiens ce qui est bon:
[VIDE]a, 0d, 0h, 0b

Ça semble bon grâce à la variable (*1), mais ça n'explique pas pourquoi dans
certaines circonstances, il me colle 2 à 4 octets ???

------------------------

"Renfield" a écrit dans le message de news:

ne pas confondre VbNull et VbNullChar ...



Avatar
Pascal B.
Et comme ça ?

Dim x As Byte
Dim pf as Integer

pf = FreeFile
Open "_null.fic" For Binary As pf
x = 0
Put pf, 1, x
Close pf

Pascal B.

"X" <x> wrote in message news:ej%23a%
| Bonjour,
|
| Merci :!o)
|
| Oui mais encore, moi je voudrais avoir le Null ascii 0, soit
| sign??? 0ascii 00h 00000000b
| Et non pas le vide (rien), ceci sur 1 octet en fichier bin
| Comment faire ???
|
| -----------
|
| "Renfield" a écrit dans le message de news:
|
| > ne pas confondre VbNull et VbNullChar ...
| >
|
|
Avatar
X
Peut être un début d'explication, en binaire il colle la taille de
la variable, alors avant je mettais des variables plus grande qu'1 octet, et
en binaire, il prend la place de la variable (en fichier je parle), ce qui
est praique d'ailleur, il suffit de faire un type, ou de mettre tout dans
une scrting avec longueur précisée, et ç prend juste la place voulue
(i/o)...

Donc, si je veux balancer un Null ascii 0, faut faire:
dim var as string *1
var = vbNullChr
put, ptr, octet (facu si 1), var

Bon, sauf si on m'envoie des infos complémentaires ou contraires, je
ferai attention, car j'écris directement das les fichiers, si j'ai un null
je ferai le traitement spécial sus-cité...
Avatar
X
Ouais, merci, ça marche aussi, comme (voir mes réponses dans ce
fil), comme quand j'ai mis à la place de ton x(byte), une
string*1=vbnullChr...

Ouais, ouais, je crois que c'est à cause de la taille de la variable, il
prend en binaire la taille de la variable...

Par contre en alpha il ne me met rien, alors que pour l'ascii 1 je vais
avoir un petit carré [], est-ce normal à ton avis ???

Merci encore :o)

------------

"Pascal B." a écrit dans le message de news:
eki$
Et comme ça ?

Dim x As Byte
Dim pf as Integer

pf = FreeFile
Open "_null.fic" For Binary As pf
x = 0
Put pf, 1, x
Close pf

Pascal B.

"X" <x> wrote in message news:ej%23a%
| Bonjour,
|
| Merci :!o)
|
| Oui mais encore, moi je voudrais avoir le Null ascii 0, soit
| sign??? 0ascii 00h 00000000b
| Et non pas le vide (rien), ceci sur 1 octet en fichier bin
| Comment faire ???
|
| -----------
|
| "Renfield" a écrit dans le message de news:
|
| > ne pas confondre VbNull et VbNullChar ...
| >
|
|




Avatar
Renfield
c'est pas simple de te comprendre, tu semble embrouillé...

je vois pas ou est le problème (*1 n'a rien a voir)

si tu veux écrire un caractère de code ASCII 0, utilise
VbNullChar....

au pire, tu peux passer par un tableau de Byte, plutot qu'une chaine de
caractères, si tu es perdu...