Message de rapport:
 

Re: Débordement d'entiers sans signe sur 8

Sujet: Re: Débordement d'entiers sans signe sur 8
par Xevel sur 26/6/2007 14:56:43

Merci pour ta réponse ^^

Ces verifications sont effectuées en amont, au niveau de l'IHM. Il n'y a donc pas de risques de ce coté là.
De plus, en faisant le test en ajoutant 1 au resultat du décalage (test qui renvoi la même erreur), on s'appercoit que le problème viens d'ailleurs.

J'ai finalement réussi à résoudre le problème :

PROCEDURE commande_intermediaire(bAnimal,bEtendu,nPays,nNumero est un entier sur 8,nRemplacement,nInfos_utilisateur)
	nRes est un entier sans signe sur 8
	
	nTmp est un entier sans signe sur 8 = nNumero

	nBlocDonnées est un entier
	SI bEtendu ALORS nBlocDonnées = 1
	
	nRes = nRemplacement
	nRes = Décalage_gauche(nRes, 11) + nInfos_utilisateur
	nRes = Décalage_gauche(nRes, 1) + nBlocDonnées
	nRes = Décalage_gauche(nRes, 10) + nPays
	nRes = Décalage_gauche(nRes, 38) + nNumero
	Trace (nRes)
	SI bAnimal ALORS nRes = nRes + LIMITE_MAX_ENTIER_8+1 // voila le super trick ^^
	
RENVOYER nRes


Le truc consiste à bidouiller avec une constante numérique. Je me suis appercu du fait que le problème arrive quand Windev fait une évaluation avec une variable x telle que MAX_ENTIER_8 < x <= MAX_ENTIER_SANS_SIGNE_8 (limites données dans "Limites.wl", que j'ai inclu dans mon projet). La fainte consiste alors à faire en sorte que ma variable soit inferieure à MAX_ENTIER, et que ce soit ce que j'y ajoute qui soit une constante aussi grande que je veux. Donc là, pour remplacer le 1 que je mettai au debut et qui était décalé de 63 positions en tout (pour devenir le MSBit), j'ajoute la constante égale à 2^64... et là ca marche ^^
Il est à noter que j'ai essayé avec avec Puissance(2,63) et que ca n'a pas marché... le résultat n'est cohérent que jusqu'a 2^31 ou 2^32, donc la c'était rapé :/

Voila ^^
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2