Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment utilisé l'operateur décalage bit à bit en vb ? '

6 réponses
Avatar
Celemka
Bonjour,



j'ai un petit probleme, j'aimerai pouvoir récupérer une valeur taper dans un
TextBox.

Le problème c'est que ma valeur est du type (au max ) 1 000 000.00

Question 1 : comment dire au textBox d'accepter les nbr a virgule ?

Je multiplie par 100 pour me débarrasser de la virgule puis je convertit
cela en hexa via Hex$. Puis j'aimerais dissocier cette mega valeur en 4
octets mais je ne trouve pas la commande. Dans le C, pour récupérer un octet
on utilise l'operateur shift '>>' Mon MSDN ainsi que celui de microsoft en
ligne ne m'a pas aider, tout est grisé chez moi. Pour le dernier octet on
fait Byte_3 = ValHexa sachant que Byte_3 est du type byte ( = 1 octet ) et
ValHexa est du type String ( 4 octets) j'avais mis Long mais Hex$ n'accepte
qu'un String

2 ieme question : comment 'couper' Valhexa en 4 petites valeurs

Merci pour votre aide

Cordialement

Celemka



Voici mon petit code :

Dim ValHexa As String

Dim Val As Single

Dim Byte_0, Byte_1, Byte_2, Byte_3 As Byte



'Text3.DataFormat.Format = double

' passe pas car Text3.Text peut etre un chiffre à virgule

Val = Text3.Text

Val = Val * 100

MsgBox " val * 100 = " & Val

ValHexa = Hex$(Val)

MsgBox "la valeur en hexa est : " & ValHexa



'Byte_3 = ValHexa

'Byte_2 = ValHexa >> 4

'Byte_1 = ValHexa >> 8

'Byte_0 = ValHexa >> 12

6 réponses

Avatar
Vincent Guichard
Celemka a écrit :
Bonjour,



Bonjour,

Je vais tenter de répondre.

Pour la seconde question, il n'existe pas d'opérateurs de décalage en
VB6. Tu dois te débrouiller sans, avec les opérateurs (division
entière) et Mod (modulo):
Byte_3 = ValHexa Mod 256
Byte_2 = ( ValHexa 256 ) Mod 256
Byte_1 = ( ValHexa 256 256 ) Mod 256
Byte_0 = ( ValHexa 256 256 256 ) Mod 256


Pour la première question, je ne comprends pas très bien ce que tu veux
dire. Un TextBox comprends des chaînes de caractères. C'est à toi
ensuite de les convertir en ce que tu veux.
L'ensemble des propriétés Data* du contrôle Textbox ne sert que dans le
cas d'une liaison avec une base de donnée, je ne pense pas que ce soit
ton cas.
Si tu veux que l'utilisateur ne puisse saisir qu'un nombre à virgule
dans le Textbox, il faut que tu vérifie toi-même que les caractères
entrés sont valides (dans l'événement Change, ou dans l'événement
KeyPress). Tu peux aussi ne vérifier que dans l'événement Validate, en
empêchant l'utilisateur d'aller plus loin tant que la valeur n'est pas
valide.
Tu peux aussi essayer de travailler avec un MaskEdBox, bien que son
utilisation ne soit pas aisée.

Vincent Guichard
Avatar
X
Bonjour,

dim ma_variable as double
ma_variable = 123.456
text1 = ma_variable

Le textBox accepte ce que tu lui envoie, c'est à toi d'envoyer une bonne
valeur, là c'est je crois un problème de variable...

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

"Celemka" a écrit dans le message de
news: 43ec4631$0$4136$
Bonjour,



j'ai un petit probleme, j'aimerai pouvoir récupérer une valeur taper dans


un
TextBox.

Le problème c'est que ma valeur est du type (au max ) 1 000 000.00

Question 1 : comment dire au textBox d'accepter les nbr a virgule ?

Je multiplie par 100 pour me débarrasser de la virgule puis je convertit
cela en hexa via Hex$. Puis j'aimerais dissocier cette mega valeur en 4
octets mais je ne trouve pas la commande. Dans le C, pour récupérer un


octet
on utilise l'operateur shift '>>' Mon MSDN ainsi que celui de microsoft en
ligne ne m'a pas aider, tout est grisé chez moi. Pour le dernier octet on
fait Byte_3 = ValHexa sachant que Byte_3 est du type byte ( = 1 octet ) et
ValHexa est du type String ( 4 octets) j'avais mis Long mais Hex$


n'accepte
qu'un String

2 ieme question : comment 'couper' Valhexa en 4 petites valeurs

Merci pour votre aide

Cordialement

Celemka



Voici mon petit code :

Dim ValHexa As String

Dim Val As Single

Dim Byte_0, Byte_1, Byte_2, Byte_3 As Byte



'Text3.DataFormat.Format = double

' passe pas car Text3.Text peut etre un chiffre à virgule

Val = Text3.Text

Val = Val * 100

MsgBox " val * 100 = " & Val

ValHexa = Hex$(Val)

MsgBox "la valeur en hexa est : " & ValHexa



'Byte_3 = ValHexa

'Byte_2 = ValHexa >> 4

'Byte_1 = ValHexa >> 8

'Byte_0 = ValHexa >> 12






Avatar
Jean-Marc
"Celemka" a écrit dans le message de
news:43ec4631$0$4136$
Bonjour,



j'ai un petit probleme, j'aimerai pouvoir récupérer une valeur taper


dans un
TextBox.

Le problème c'est que ma valeur est du type (au max ) 1 000 000.00

Question 1 : comment dire au textBox d'accepter les nbr a virgule ?



Hello,

pour vérifier que les caractères saisis correspondent à un nombre
à virgule, tu peux utiliser un automate. Il y a un exemple ici,
qu'il suffit d'adapter à tes besoins:

http://myjmnhome.dyndns.org/automates.htm

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Celemka
Bonjour,

J'ai d'autre choses en //, d'ou mon retard.
Effectivement c'est juste un probleme de variable.
Le textBox n'accepte pas le point "." comme séparateur decimal mais que la
virgule ",".
Cela à ete rectifié en modifiant dela dans les options régionales du PC.

Merci pour m'y avoir mis la puce à l'oreille.
Celemka

"X" <x> a écrit dans le message de
news:
Bonjour,

dim ma_variable as double
ma_variable = 123.456
text1 = ma_variable

Le textBox accepte ce que tu lui envoie, c'est à toi d'envoyer une bonne
valeur, là c'est je crois un problème de variable...

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

"Celemka" a écrit dans le message de
news: 43ec4631$0$4136$
> Bonjour,
>
>
>
> j'ai un petit probleme, j'aimerai pouvoir récupérer une valeur taper


dans
un
> TextBox.
>
> Le problème c'est que ma valeur est du type (au max ) 1 000 000.00
>
> Question 1 : comment dire au textBox d'accepter les nbr a virgule ?
>
> Je multiplie par 100 pour me débarrasser de la virgule puis je convertit
> cela en hexa via Hex$. Puis j'aimerais dissocier cette mega valeur en 4
> octets mais je ne trouve pas la commande. Dans le C, pour récupérer un
octet
> on utilise l'operateur shift '>>' Mon MSDN ainsi que celui de microsoft


en
> ligne ne m'a pas aider, tout est grisé chez moi. Pour le dernier octet


on
> fait Byte_3 = ValHexa sachant que Byte_3 est du type byte ( = 1 octet )


et
> ValHexa est du type String ( 4 octets) j'avais mis Long mais Hex$
n'accepte
> qu'un String
>
> 2 ieme question : comment 'couper' Valhexa en 4 petites valeurs
>
> Merci pour votre aide
>
> Cordialement
>
> Celemka
>
>
>
> Voici mon petit code :
>
> Dim ValHexa As String
>
> Dim Val As Single
>
> Dim Byte_0, Byte_1, Byte_2, Byte_3 As Byte
>
>
>
> 'Text3.DataFormat.Format = double
>
> ' passe pas car Text3.Text peut etre un chiffre à virgule
>
> Val = Text3.Text
>
> Val = Val * 100
>
> MsgBox " val * 100 = " & Val
>
> ValHexa = Hex$(Val)
>
> MsgBox "la valeur en hexa est : " & ValHexa
>
>
>
> 'Byte_3 = ValHexa
>
> 'Byte_2 = ValHexa >> 4
>
> 'Byte_1 = ValHexa >> 8
>
> 'Byte_0 = ValHexa >> 12
>
>
>
>




Avatar
Celemka
Merci Vincent,

J'ai pris du temps a faire le trucs car il y a d'autres choses qui ne
marchait pas.
En tout cas l'histoire du Mod ça fonctionne.

Merci pour votre aide.
Celemka

"Vincent Guichard" a écrit dans le message de
news:43ec4d04$0$29207$
Celemka a écrit :
> Bonjour,

Bonjour,

Je vais tenter de répondre.

Pour la seconde question, il n'existe pas d'opérateurs de décalage en
VB6. Tu dois te débrouiller sans, avec les opérateurs (division
entière) et Mod (modulo):
Byte_3 = ValHexa Mod 256
Byte_2 = ( ValHexa 256 ) Mod 256
Byte_1 = ( ValHexa 256 256 ) Mod 256
Byte_0 = ( ValHexa 256 256 256 ) Mod 256


Pour la première question, je ne comprends pas très bien ce que tu veux
dire. Un TextBox comprends des chaînes de caractères. C'est à toi
ensuite de les convertir en ce que tu veux.
L'ensemble des propriétés Data* du contrôle Textbox ne sert que dans le
cas d'une liaison avec une base de donnée, je ne pense pas que ce soit
ton cas.
Si tu veux que l'utilisateur ne puisse saisir qu'un nombre à virgule
dans le Textbox, il faut que tu vérifie toi-même que les caractères
entrés sont valides (dans l'événement Change, ou dans l'événement
KeyPress). Tu peux aussi ne vérifier que dans l'événement Validate, en
empêchant l'utilisateur d'aller plus loin tant que la valeur n'est pas
valide.
Tu peux aussi essayer de travailler avec un MaskEdBox, bien que son
utilisation ne soit pas aisée.

Vincent Guichard


Avatar
Celemka
Merci pour cet automate, c'est tres tres intéressant


"Jean-Marc" a écrit dans le message de
news:43eda53e$0$2127$
"Celemka" a écrit dans le message de
news:43ec4631$0$4136$
> Bonjour,
>
>
>
> j'ai un petit probleme, j'aimerai pouvoir récupérer une valeur taper
dans un
> TextBox.
>
> Le problème c'est que ma valeur est du type (au max ) 1 000 000.00
>
> Question 1 : comment dire au textBox d'accepter les nbr a virgule ?

Hello,

pour vérifier que les caractères saisis correspondent à un nombre
à virgule, tu peux utiliser un automate. Il y a un exemple ici,
qu'il suffit d'adapter à tes besoins:

http://myjmnhome.dyndns.org/automates.htm

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;