Dépassement de capacité

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #20208231
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" 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



Christian Hubert-Hugoud / weabow - Xtrem7
Le #20208371
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" 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" 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






LE TROLL
Le #20208801
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
_______________________
.
.


"Christian Hubert-Hugoud / weabow - Xtrem7" 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" 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" 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









Gloops
Le #20232501
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



elziphir
Le #20453831
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




Jean-marc
Le #20454251
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

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_' ;
Publicité
Poster une réponse
Anonyme