2009-07-28 6 views
6

En raison d'une valeur de quantité dépassant ce qu'un VBScript INT peut stocker, je reçois un message d'erreur assez méchant (en fait les utilisateurs sont) ... C'est totalement un cas de twitpocalypse.Classic ASP App Erreur CINT - twitpocalypse v2

Comme CINT() ne fonctionnera pas dans cette situation, quelle est la meilleure solution de contournement?

requestqty = 40200 
CInt() max = 32767 

CInt(requestqty) 

EDIT
CLng() semble faire l'affaire, tout risque pour le code pour changer tout CInt() à CLng(). D'après ce que j'ai lu ci-dessous et ailleurs sur le web, il semble qu'il y ait vraiment très peu de raisons d'utiliser CInt(). Je n'ai pas écrit cette application particulière et je ne sais pas pourquoi l'un a été utilisé sur l'autre, mais préfèrerais ne pas bandaid le problème et résoudre complètement ce problème dans l'application afin qu'il ne se reproduise plus ...

+0

Pouvez-vous utiliser un double? – NoCarrier

Répondre

11

Utilise toujours long au lieu de int dans VBScript (sauf si vous voulez spécifiquement limiter la valeur à la plage int). Il n'y a pas d'avantage en termes de performances pour l'utilisation du plus petit type, et il n'y a aucun avantage de taille de stockage car toutes les variables sont des variantes, donc tous les types simples utilisent la même quantité de mémoire.

Utilisez la fonction CLng au lieu de la fonction CInt.

+0

Une raison de ne pas changer tout le CInt à CLng? Un risque? Je n'ai pas écrit l'application et j'ai besoin de la "réparer" plutôt rapidement ... Je ne touche pas tellement à VBScript et à Classic ASP, donc un peu sous l'eau ... – RSolberg

+0

Vous pouvez changer tout CInt en CLng, mais Ensuite, vous devez vérifier que les valeurs ne sont pas tronquées plus tard dans le processus, comme stockées dans un champ smallint dans une base de données. – Guffa

+0

Parfait .... Merci ... – RSolberg

2

CLng() et en utilisant un long au lieu d'un int?