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

Dépassement de capacité

6 réponses
Avatar
Christian Hubert-Hugoud / weabow - Xtrem7
Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité sur
une assignation d'un entier long (Long), qui en fait se comporte comme un
Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian

6 réponses

Avatar
LE TROLL
Bonjour,

Si je fais ça :
Dim l As Long
l = 123456789012

C'est un dépassement de capacité !

Qu'est-ce que tu lui rentres dans ton long, peut être quelque chose
d'indigeste ?
Il se comporte comme un integer, pourquoi ?
Ce sont des entiers signés éventuellement et seulement, dont la diférenc est
la capacité...

Il se passe quoi si tu mets un double à la place ?

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Christian Hubert-Hugoud / weabow - Xtrem7" a écrit dans
le message de news:%
Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité sur
une assignation d'un entier long (Long), qui en fait se comporte comme un
Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian



Avatar
Christian Hubert-Hugoud / weabow - Xtrem7
Facile :

Si je dépasse les 32.000 et des peuffes, il plante le message d'erreur.

Je n'avais pas ce pb dans le passé. Je me demande si ce n'est pas une
question de Vista, car j'ai régulièrement des "curiosités".


"LE TROLL" <le a écrit dans le message de
news:
Bonjour,

Si je fais ça :
Dim l As Long
l = 123456789012

C'est un dépassement de capacité !

Qu'est-ce que tu lui rentres dans ton long, peut être quelque chose
d'indigeste ?
Il se comporte comme un integer, pourquoi ?
Ce sont des entiers signés éventuellement et seulement, dont la diférenc
est la capacité...

Il se passe quoi si tu mets un double à la place ?

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Christian Hubert-Hugoud / weabow - Xtrem7" a écrit
dans le message de news:%
Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité sur
une assignation d'un entier long (Long), qui en fait se comporte comme un
Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian






Avatar
LE TROLL
Bonjour, suite,

Je ne sais pas, moi avec Vista 32 + VB6, aucun problème, enfin, si, j'ai
juste eu les menus qui étaient devenus trop larges, voir les feuilles, mais
ça a peut être aussi à voir avec la taille de l'écran ? J'ai tout retassé,
depuis RAS.

Oui, ta variable long semble se comporter comme un integer, je ne sais
pas, peut être un rapport avec le code en amont ?

Pour ce qui me concerne, quand j'ai un problème de ce genre et que je ne
trouve pas, je balance un Double et c'est réglé, avec la RAM actuelle on
n'est pas à une variable près, même pas à cent d'ailleurs, et peut être
qu'après tu comprendras pourquoi... Y a par exemple la possibilité il me
semble, sous un nom savant, de forcer un type de variable en un autre,
n'est-ce pas un truc de ce genre...

Désolé, peut être qu'un savant en variables va répondre ?

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
_______________________
.
.


"Christian Hubert-Hugoud / weabow - Xtrem7" a écrit dans
le message de news:
Facile :

Si je dépasse les 32.000 et des peuffes, il plante le message d'erreur.

Je n'avais pas ce pb dans le passé. Je me demande si ce n'est pas une
question de Vista, car j'ai régulièrement des "curiosités".


"LE TROLL" <le a écrit dans le message de
news:
Bonjour,

Si je fais ça :
Dim l As Long
l = 123456789012

C'est un dépassement de capacité !

Qu'est-ce que tu lui rentres dans ton long, peut être quelque chose
d'indigeste ?
Il se comporte comme un integer, pourquoi ?
Ce sont des entiers signés éventuellement et seulement, dont la diférenc
est la capacité...

Il se passe quoi si tu mets un double à la place ?

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
_______________________
.
.


"Christian Hubert-Hugoud / weabow - Xtrem7" a écrit
dans le message de news:%
Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité
sur une assignation d'un entier long (Long), qui en fait se comporte
comme un Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian









Avatar
Gloops
Bonjour,

Je n'ai pas la réponse mais je me demande ce que ça donnerait en
déclarant la variable en Double.

Est-ce qu'on trouve quelque chose en cherchant "types de données sous
Vista" ?
________________________________________________________________________
Christian Hubert-Hugoud / weabow - Xtrem7 a écrit, le 23/09/2009 09:56 :
Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité
sur une assignation d'un entier long (Long), qui en fait se comporte
comme un Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian



Avatar
elziphir
Bonjour,

Dans le deuxième exemple la solution
Si on exécute le code ci-dessous il y aura une erreur et pourtant il n'y a
pas de dépassement de capacité.

Sub Brol
Dim Mt as double
Dim X as Integer
Dim Y as Integer
X = 133
Y = 247
Mt = X * Y 'Dépassement de capacité !!? 133 * 247 = 32851 on utilise un
double
End Sub

Solution

Sub SolutionBrol 'En utilisant des "Singles"
Dim X as Single
Dim Y as Single
Dim Mt as Double
X = 133
Y = 247
Mt = X * Y ' OK
End Sub

Les opérantes doivent être déclarées en "Single"

Cordialement

elziphir


"Christian Hubert-Hugoud / weabow - Xtrem" wrote:

Bonjour à tous,

Sous VB6 et Vista (pas sous XP), j'obtiens un dépassement de capacité sur
une assignation d'un entier long (Long), qui en fait se comporte comme un
Integer.

Avez-vous déjà eu ce pb et comment l'avez-vous résolu ?

Excellente continuation

Christian




Avatar
Jean-marc
elziphir wrote:
Bonjour,



Hello,

Dans le deuxième exemple la solution
Si on exécute le code ci-dessous il y aura une erreur et pourtant il
n'y a pas de dépassement de capacité.



Si.

Sub Brol
Dim Mt as double
Dim X as Integer
Dim Y as Integer
X = 133
Y = 247
Mt = X * Y 'Dépassement de capacité !!? 133 * 247 = 32851 on
utilise un double



NON.

Il faut lire la doc de Visual Basic.
Quand tu fais une opération entre 2 variables de type A et B, VB calcule
en interne en utilisant le type le plus grand (le moins contraignant).
Ici, X et Y sont de type INTEGER, donc VB utilise ce type pour
stocker son résultat intermédiaire.
Or, x * y = 133 * 247 = 32851, qui est PLUS grand que 32767 (la limite
pour un Integer).

Tu as donc bien un dépassement de capacité.

Et le fait que tu veuilles ensuite AFFECTER à un type moins contraignant
(ici un double) n'y change rien.

Un article de notre FAQ t'explique tout ça:
http://faq.vb.free.fr/index.php?question5" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question5

et la doc de VB est très claire à ce sujet:
http://msdn.microsoft.com/en-us/library/aa242833(VS.60).aspx

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;